我正面临以下问题。我正在使用SurfaceView
来显示相机预览,但是当我将表面视图设置为可见时,我会遇到以下异常。
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:1460)
at com.the.package.activity.ShowPhotoActivity$2.surfaceChanged(ShowPhotoActivity.java:111)
at android.view.SurfaceView.updateWindow(SurfaceView.java:558)
at android.view.SurfaceView.setVisibility(SurfaceView.java:248)
ShowPhotoActivity:
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters parameters = mCamera.getParameters(); // <-- line 101
Camera.Size size = getBestPreviewSize(width, height, parameters);
if (mInPreview) {
mCamera.stopPreview();
}
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if (display.getRotation() == Surface.ROTATION_0) {
mCamera.setDisplayOrientation(90);
parameters = mCamera.getParameters(); // <---- line 111
size = getBestPreviewSize(width, height, parameters);
}
if (display.getRotation() == Surface.ROTATION_270) {
mCamera.setDisplayOrientation(180);
parameters = mCamera.getParameters();
size = getBestPreviewSize(width, height, parameters);
}
Camera.Size s = getBestResolution(parameters);
parameters.setPreviewSize(size.width, size.height);
parameters.setPictureSize(s.width, s.height);
mCamera.setParameters(parameters);
if (mInPreview) {
mCamera.startPreview();
}
}
这真让我疯狂,为什么第101行处理没有问题,第111行抛出异常。这只发生在Android 4.1.1设备Sony st26i(Xperia J)上。我没有注意到Galaxy Nexus,Galaxy SIII或4.1.2仿真器有任何问题。谢谢你的每一个想法。
答案 0 :(得分:1)
这里已经回答,检查接受的答案: Correct handling of exception: "getParameters failed (empty parameters)"
我的猜测是这里的stopPreview存在问题,可能是从错误的线程调用的。在你调用stopPreview时检查你的日志,它可能会给你一个线索。