【发布时间】:2015-01-25 01:59:40
【问题描述】:
我面临以下问题。我正在使用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)
显示照片活动:
@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 模拟器有任何问题。感谢您的每一个想法。
【问题讨论】:
-
谢谢,我已经试过了,但是不行。
-
您是否有权访问其中一台故障设备?或者至少有一些方法可以在发生故障时获取 logcat 输出?
-
我只发布了 logcat。我刚刚删除了一些函数调用。
标签: android android-camera android-view surfaceview