【问题标题】:Android Camera is not responding (Fail to connect to camera service)Android 相机没有响应(无法连接到相机服务)
【发布时间】:2015-11-04 01:30:23
【问题描述】:

我知道有很多这样的问题。但是,对我来说没有任何效果。我正在通过自学指南学习 android。我的任务是使用 Camera 类实现相机服务。我知道相机已被弃用。但是,我打算让它使用 Camera 类运行。我无法连接到相机服务错误。我什至没有得到相机预览。当我运行相机时,我得到的只是一个黑屏和一个用于单击图片的单击按钮。但是,第二次运行它会冻结我的手机,我必须拔出并放入电池才能再次工作。到目前为止,我已经设置了相机类所需的所有权限 清单:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera2.full"></uses-feature>
    <application>....</application>

我正在确保在所有需要的地方释放相机。我了解到,当我们没有正确释放相机时,我们会收到此错误。 我的 onPause() 方法

   @Override
    public void onPause()
    {
        super.onPause();
        if(camera!=null)
        {
            camera.release();
            camera=null;
        }
}

我的 onResume 方法

@Override
public void onResume()
{
    super.onResume();
    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.GINGERBREAD)
    {
        camera.open(0);

    }
    else {
        camera.open();

    }

我的surfaceDestroyed方法

 @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
                if(camera!=null)
                {
                    camera.stopPreview();
                    camera.setPreviewCallback(null);
                    camera.release();
                    camera=null;
                }
            }

我的surfaceCreated方法

public void surfaceCreated(SurfaceHolder holder) {
            if(camera!=null)
            {
                try {
                    camera.setPreviewDisplay(holder);
                } catch (IOException e) {
                    Log.e(TAG, "ERROR SETTING UP PREVIEW", e);
                }
            }
        }

我的控制台输出:

Process: course.examples.criminalintent, PID: 12954
    java.lang.RuntimeException: Unable to resume activity {course.examples.criminalintent/course.examples.criminalintent.CrimeCameraActivity}: java.lang.RuntimeException: Fail to connect to camera service

经过一些调试,我发现我的相机一直是空的。这解释了为什么我在屏幕上看不到相机预览。但是,我不明白为什么它会冻结我的手机,我应该如何让它正常工作?请详细说明。谢谢!

【问题讨论】:

    标签: android camera android-camera


    【解决方案1】:

    我想通了!我的 onResume() 方法的第一个问题是它没有被 try catch 块包围。此外,我将 0 之类的常量替换为 (Camera.CameraInfo.CAMERA_FACING_FRONT) 之类的常量。

    其次,我收到参数失败错误。我通过删除 setPreviewFormat(format) 语句删除了该错误。

    以下是我所做的更改:

    更新了 onResume() 方法

    try {
                    releaseCameraAndPreview();
                    if (Id == 0) {
                        camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
                    }
                    else {
                        camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
                    }
                } catch (Exception e) {
                    Log.e(getString(R.string.app_name), "failed to open Camera");
                    e.printStackTrace();
                } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 2021-12-25
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多