Android错误:无法连接到相机

时间:2014-06-11 05:27:41

标签: android android-camera

我想按一下按钮打开默认的移动摄像头。我尝试了以下代码:

  Camera=(Button)findViewById(R.id.CameraID);
  Camera.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent Intent3=new   Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
        startActivity(Intent3); 
    }
});

我还在Android Manifest文件中添加了以下权限:

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />

单击相机按钮时仍然看到错误。相机正在加载,但在此之后我立即收到消息无法连接到卡马拉屏幕上。

4 个答案:

答案 0 :(得分:0)

尝试使用ACTION_IMAGE_CAPTURE代替INTENT_ACTION_STILL_IMAGE_CAMERA像这样

Intent Intent3 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

答案 1 :(得分:0)

根据android camera documentation,抛出运行时异常:

if connection to the camera service fails (for example, 
if the camera is in use by another process or device policy manager has disabled the camera)

您是否尝试过检查相机是否正在使用其他内容,或者您​​的保单管理员是否设置了关闭相机的设置?

确保调用release()方法在不再需要时释放相机,否则您将无法使用相机。也许作为一个完整性检查,看看你的普通相机是否有效。如果它说它失败了,那么你以前尝试过runni

答案 2 :(得分:0)

据我了解,您实际上必须使用ACTION_IMAGE_CAPTURE操作(而不是INTENT_ACTION_STILL_IMAGE_CAMERA)启动您的意图。然后,在onActivityResult中,您必须从Intent获取数据:在那里您将找到对图像的引用。 有关详细信息,请参阅Receiving camera intent result
所以使用

MediaStore.ACTION_IMAGE_CAPTURE

而不是

MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA

修改

您可以使用此方法检查相机是否已被其他应用程序打开,但请注意此方法首先获取相机

public boolean isCameraUsebyApp() {
    Camera camera = null;
    try {
        camera = Camera.open();
    } catch (RuntimeException e) {
        return true;
    } finally {
        if (camera != null) camera.release();
    }
    return false;
}

如果它成功获得,则意味着没有其他应用程序正在使用此相机,并且不要忘记再次发布它,否则您将无法再次获取它。

它的抛出RuntimeException表示相机正在被另一个进程使用,或者设备策略管理器已禁用该摄像头。

答案 3 :(得分:0)

如果要打开默认相机,请使用

 android.provider.MediaStore.ACTION_IMAGE_CAPTURE

而不是

 MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA