2015-02-06 66 views
-2

我有一个场景,在该场景中,我通过以下代码激发了打开摄像头的意图。只有在射击意图打开摄像头后才打开设备摄像头

if(isCameraInUse()) 
      return; 
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
mImageFile = getOutputFromCamera(); 
Uri tempuri = Uri.fromFile(mImageFile); 
i.putExtra(MediaStore.EXTRA_OUTPUT, tempuri); 
startActivityForResult(i, 0); 

现在,如果我有多个相机应用程序,那么我将它们全部视为可以打开的选项。但我只想要打开设备相机。这可能吗?是否可以触发一个意图指定哪个应用程序应该捕获该意图?

回答

0

我想你应该创建一个android.hardware.Camera的对象。而只是调用它的开放方法将为你做的工作。

调用open()方法Camera camera = Camera.open();它将创建一个新的Camera对象来访问特定的硬件摄像头。如果相同的相机被其他应用程序打开,则会引发RuntimeException。

你可能之前

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);希望这有助于在你的代码中使用此。我相信你已经将这些添加到应用程序的清单中。

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

如果要启动特定应用程序中使用此代码。我希望它能解决你的问题。

PackageManager pm = getActivity().getPackageManager(); 
Intent intent = pm.getLaunchIntentForPackage("camera package name"); 
startActivity(intent); 
0

你需要调用setPackage的意图

i.setPackage("package.name"); 
startActivityForResult(i, 0); 
0

取而代之的是:

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

这样做:

Intent i = new Intent("com.android.camera"); 

调用摄像头软件包名称认为它应该有所帮助。