Reputation: 4005
I'm facing following problem. I'm using SurfaceView
to show Camera preview, but when I set surface view to visible, I get following exception.
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();
}
}
It really drives me crazy, why line 101 is processed with no problem and line 111 throws exception. This happens only on device Sony st26i (Xperia J) with Android 4.1.1. I haven't noticed any problems on Galaxy Nexus, Galaxy SIII or 4.1.2 emulator. Thanks for every idea.
Upvotes: 0
Views: 646
Reputation: 86
It has been answered over here, check the accepted answer: Correct handling of exception: "getParameters failed (empty parameters)"
My guess is that stopPreview here is problematic, potentially called from the wrong thread. Check your logs around the time you call stopPreview, it might give you a clue.
Upvotes: 1