我在Moto E上运行相机时遇到问题。在其他设备上我的代码运行良好,但不适用于Moto E.可能是因为Moto E没有闪光灯或辅助相机。
private synchronized void startCameraPreview() {
try {
previewView.getHolder().addCallback(this);
previewView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
camera.setPreviewCallback(null);
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
}
catch (Exception exception) {
Log.e(TAG, "Can't start camera preview due to Exception", exception);
listener.onCameraError();
}
}
这会给出下面粘贴的错误:
Can't start camera preview due to Exception
java.io.IOException: setPreviewTexture failed
at android.hardware.Camera.setPreviewDisplay(Native Method)
at android.hardware.Camera.setPreviewDisplay(Camera.java:474)
at CameraFragment.startCameraPreview(CameraFragment.java:149)
at CameraFragment.surfaceCreated(CameraFragment.java:472)
at android.view.SurfaceView.updateWindow(SurfaceView.java:572)
at android.view.SurfaceView.access$000(SurfaceView.java:86)
如果有人知道如何处理这个问题?
答案 0 :(得分:6)
我使用camera.stopPreview()解决了这个错误;就在camera.setPreviewDisplay()之前。希望这对其他人有用。
只是记录Nidhi的解决方案,作为那些没有阅读评论的人的答案。
但问题的根源仍然让我无法理解。我在camera.stopPreview
中尝试了camera.release
以及onPause()
(因为我在相机恢复后遇到了崩溃),但显然直到我尝试上述解决方案后它才能正常工作。