我的相机设置为 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
它工作正常,但如果我将其更改为 PORTRAIT
而不是 LANDSCAPE
然后它崩溃并出现以下错误...
07-30 12:51:37.655: ERROR/AndroidRuntime(22069): FATAL EXCEPTION: main
07-30 12:51:37.655: ERROR/AndroidRuntime(22069): java.lang.RuntimeException: Fail to connect to camera service
07-30 12:51:37.655: ERROR/AndroidRuntime(22069): at android.hardware.Camera.native_setup(Native Method)
07-30 12:51:37.655: ERROR/AndroidRuntime(22069): at android.hardware.Camera.<init>(Camera.java:110)
07-30 12:51:37.655: ERROR/AndroidRuntime(22069): at android.hardware.Camera.open(Camera.java:90)
07-30 12:51:37.655: ERROR/AndroidRuntime(22069): at org.digital.com.CamLayer.surfaceCreated(CamLayer.java:3
它崩溃的方法是..
public void surfaceCreated(SurfaceHolder holder) {
synchronized(this) {
mCamera = Camera.open();
Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(800, 480);
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
Log.e("Camera", "mCamera.setPreviewDisplay(holder);");
}
mCamera.startPreview();
mCamera.setPreviewCallback(this);
}
}
它在 mCamera = Camera.open();
处崩溃
我的 list 文件有 <uses-permission android:name="android.permission.CAMERA"></uses-permission>
如何解决此问题以便我可以纵向查看我的应用?
最佳答案
平台存在一些并发问题:http://code.google.com/p/android/issues/detail?id=6201
解决方法是在释放 cam 之前清除回调,即我建议使用以下清理代码:
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mCam != null) {
mCam.stopPreview();
mCam.setPreviewCallback(null);
mCam.release();
mCam = null;
}
}
关于java - 无法连接到相机服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371692/