我想按一下按钮打开默认的移动摄像头。我尝试了以下代码:
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" />
单击相机按钮时仍然看到错误。相机正在加载,但在此之后我立即收到消息无法连接到卡马拉屏幕上。
答案 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