2015-02-06 41 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"); 

調用攝像頭軟件包名稱認爲它應該有所幫助。

相關問題