Я создал пользовательское приложение для камеры. Перед лицом проблемы в ориентации экрана, и я не хочу, чтобы деятельность была воссоздана при изменении ориентации. Пожалуйста, помогите мне в этом с полным решением.Пользовательская ориентация камеры
Получение исключения NULL-указателя внутри метода surfaceChanged в классе предварительного просмотра.
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
Log.d("SurfaceChanged", "getting parameters" + parameters);
Получение исключение указателя NULL в строке ниже:
Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Log.d("SurfaceChanged", "Getting the system services");
if(display.getRotation() == Surface.ROTATION_0){
Log.d("SurfaceChanged", "Inside the if condition 1");
parameters.setPreviewSize(height,width);
Log.d("SurfaceChanged", "setting preview size");
mCamera.setDisplayOrientation(90);
Log.d("SurfaceChanged", "setting display orientation as 90");
}
if(display.getRotation() == Surface.ROTATION_90){
Log.d("SurfaceChanged", "Inside the if condition 2");
parameters.setPreviewSize(width,height);
Log.d("SurfaceChanged", "setting the preview size 2 ");
}
if(display.getRotation() == Surface.ROTATION_180){
Log.d("SurfaceChanged", "Inside the if condition 3");
parameters.setPreviewSize(height,width);
Log.d("SurfaceChanged", "setting the preview size 3");
}
if(display.getRotation() == Surface.ROTATION_270){
Log.d("SurfaceChanged", "Inside the if condition 4");
parameters.setPreviewSize(width,height);
Log.d("SurfaceChanged", "setting preview size 4");
mCamera.setDisplayOrientation(180);
Log.d("SurfaceChanged", "setting display orientation as 180");
}
mCamera.setParameters(parameters);
Log.d("SurfaceChanged", "setting the parameters");
try {
mCamera.setPreviewDisplay(mHolder);
Log.d("SurfaceChanged", "setting preview display to mHolder");
mCamera.startPreview();
Log.d("SurfaceChanged", "preview as started");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Любая помощь будет принята с благодарностью.
12-23 16: 07: 34,962 8845-8845/com.clarity.camera Е/AndroidRuntime: неустранимый: Основной процесс: com.clarity.camera, ПИД: 8845 java.lang.NullPointerException: Попытка invoke virtual method 'java.lang.Object android.content.Context.getSystemService (java.lang.String)' на нулевой ссылке объекта на com.clarity.camera.CameraPreview.surfaceChanged (CameraPreview.java:230) на android .view.SurfaceView.updateWindow (SurfaceView.java:583) на android.view.SurfaceView.access $ 000 (SurfaceView.java:86) на android.view.SurfaceView $ 3.onPreDraw (SurfaceView.java:175) на android .view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:847) в android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1897) в android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1019) в android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5725) на android.view.Choreographer $ CallbackRecord.run (Хореограф.java:761) на android.view.Choreographer.doCallbacks (Хореограф.java:574) на android.view.Choreographer.doFrame (Хореограф.java:544) на android.view.Choreographer $ FrameDisplayEventReceiver.run (Хореограф.java:747) на android.os.Handler.handleCallback (Handler.java:733) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:136) на android.app.ActivityThread.main (ActivityThread.java:5086) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 785) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601)
Опубликуйте LogCat –