Java.lang.RuntimeException: не удается получить информацию о камере

В моей PhotoCaptureActivity.java onCreate() у меня есть:

OrientationEventListener oeL = new  OrientationEventListener(this) {        
            public void onOrientationChanged(int orientation) {
                 if (orientation == ORIENTATION_UNKNOWN) return;
                 try {
                     android.hardware.Camera.CameraInfo info =
                            new android.hardware.Camera.CameraInfo();                
                     android.hardware.Camera.getCameraInfo(currentCameraId, info);
                     orientation = (orientation + 45) / 90 * 90;
                     int rotation = 0;
                     if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
                         rotation = (info.orientation - orientation + 360) % 360;
                     } else {  // back-facing camera
                         rotation = (info.orientation + orientation) % 360;
                     }
                     if(camera != null) {
                         Camera.Parameters parameters = camera.getParameters();
                         parameters.setRotation(rotation);
                         savingRotation = rotation;
                     }
                 } catch(Exception e) {
                     return;
                 }
            }
         };
         oeL.enable();

Исключение произошло в этой строке: android.hardware.Camera.getCameraInfo(currentCameraId, info);

java.lang.RuntimeException: Fail to get camera info
       at android.hardware.Camera.getCameraInfo(Camera.java)
       at cic.signin.macio.jun.activities.PhotoCaptureActivity$3.onOrientationChanged(PhotoCaptureActivity.java:70)
       at android.view.OrientationEventListener$SensorEventListenerImpl.onSensorChanged(OrientationEventListener.java:143)
       at android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:584)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4424)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
       at dalvik.system.NativeStart.main(NativeStart.java)

Мой вопрос: если android.hardware.Camera.getCameraInf(currentCameraId, info) в OrientationEventListener onOrientationChanged() был вызван слишком часто причиной исключения? Как решить проблему? btw, это исключение не произошло в 4.0 и 4.1, только на определенном устройстве.

Ответы

Ответ 1

Дикая догадка здесь - его не связано с вашим кодом, reset устройство и повторите попытку. Иногда моя камера (или даже вспышка перестает работать), и единственное, что можно исправить, - это reset устройство.