java - 无法连接到相机服务

标签 java android

我的相机设置为 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/

相关文章:

android - 设置对 FirebaseRecyclerAdapter android 的不同引用

android - 用安卓获取歌曲信息

android - Eclipse & Seqoyah - 在设备上启动应用程序之前尝试连接到 gdbserver

android - TextView 中的图像可点击

java - 调试和运行 GWT/GAE 应用程序的客户端/服务器代码

java - 检查java中的区域语言

java - 在无限流上调用 .map()?

java - 如何限制通用类型的接口(interface)只接受实现类

java - 尝试调用数组并设置文本文件中的值

android - App Store 或 Google Play 应用程序的加密和导出许可证