Ответ 1
Дикая догадка здесь - его не связано с вашим кодом, reset устройство и повторите попытку. Иногда моя камера (или даже вспышка перестает работать), и единственное, что можно исправить, - это reset устройство.
В моей 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, только на определенном устройстве.
Дикая догадка здесь - его не связано с вашим кодом, reset устройство и повторите попытку. Иногда моя камера (или даже вспышка перестает работать), и единственное, что можно исправить, - это reset устройство.