以下代码用于从相机获取jpeg-photo
public void getPhoto(final PictureCallback callback, final Runnable focusFailCallback) {
if(!Camera.Parameters.FOCUS_MODE_FIXED.equals(mCamera.getParameters().getFocusMode()) &&
!Camera.Parameters.FOCUS_MODE_INFINITY.equals(mCamera.getParameters().getFocusMode())) {
mCamera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
if(success) {
camera.takePicture(null, null, null, callback);
} else {
camera.cancelAutoFocus();
focusFailCallback.run();
}
}
});
} else {
mCamera.takePicture(null, null, null, callback);
}
}
大多数情况下都可以。它在startPreview
和stopPreview
来电之间进行通话,因此我没有遇到任何问题。但是在随机的时刻,它可以抛出异常。
java.lang.RuntimeException: takePicture failed
android.hardware.Camera.native_takePicture(Native Method)
android.hardware.Camera.takePicture(Camera.java:1828)
org.opencv.android.JavaCameraView$2.onAutoFocus(JavaCameraView.java:463)
android.hardware.Camera$EventHandler.handleMessage(Camera.java:1273)
android.os.Handler.dispatchMessage(Handler.java:111)
android.os.Looper.loop(Looper.java:194)
android.app.ActivityThread.main(ActivityThread.java:5534)
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke(Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
我不知道我没有提供什么。
答案 0 :(得分:0)
我在Moto E3和其他一些设备上遇到了同样的问题,并且在cancelAutoFocus
之前调用camera.takePicture
使得崩溃消失了。