2011-06-23 25 views
3

我正在構建基於照片庫的Android 2.2應用程序。有一個選項可以從相機拍照並在應用程序中使用它。我期待:Android應用程序內的攝像頭控制

  1. 從應用程序啓用相機。

  2. 拍照。

  3. 自動關閉攝像頭和顯示拍攝的畫面中應用

可惜裏面,我沒能獲得所拍攝圖像的應用程序。一旦拍攝照片,相機不會自動關閉或返回到應用程序。現在我必須點擊後退按鈕才能進入應用程序,並從SD卡上手動選擇圖片。相機是通過意圖打開,我正在使用下面的類。

http://developer.android.com/reference/android/hardware/Camera.html

+0

有你使用Camera類http://developer.android.com/reference/android/hardware/Camera.html –

+0

您是否使用自定義的相機或攝像機開幕通過意圖? – Sujit

+0

是我的相機正在使用意圖,我正在使用上述相機類。我用這些輸入更新了問題。 –

回答

4

你需要做兩件事。啓動相機應用程序,並告訴它在哪裏存儲,它需要的圖片:

File photo = new File(Environment.getExternalStorageDirectory(), "myFile.jpg"); 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
startActivityForResult(intent, myRequestCode); 

當用戶關閉攝像頭應用程序,你的應用程序和活動將會恢復。所以,你必須覆蓋onActivityResult得到結果:

if (resultCode == myRequestCode){ 
    File photo = new File(Environment.getExternalStorageDirectory(), "myFile.jpg"); 
    // open it, show it, insert into MediaStore whatever 
} 

如果不提供保存的地方,則可以使用任何intent.getDataintent.getParcelableExtra使用Intent.EXTRA_STREAM或者檢索。

2

我想..你正在做類似下面的代碼

意向cameraIntent =新意圖(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); //請求代碼使用,而不是startActivity startActivityForResult

 startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

..每當你與你的相機。按完成確定..你會回到你的活動..然後在你的活動onActivityResult回調將是調用。在這裏您將獲得點擊圖像的數據。

謝謝。