2010-10-18 42 views
5

我正在Android應用中使用手機的相機拍照。我使用意圖使用內置的攝像頭應用程序,我用下面的代碼:通過意圖使用手機相機 - 活動永不返回?

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(FILEPATH))); 
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE); 

它工作正常並且相機長大。我可以拍照,手機給我三種選擇:取消,重拍,OK。前兩項工作,按取消返回用戶的應用程序,但按OK和沒有發生。顯然onActivityResult沒有被調用,並且相機僅停留在屏幕上。調試器中也沒有。

使用Android 2.2.1在Nexus One上運行應用程序。運行Android 2.0的模擬器上出現同樣的問題。

編輯:使用HTC Sense UI運行Android 2.2的HTC Desire進行測試:效果非常好。 emalator上也沒有Google N1。

EDIT2:看來,HTC Desire的圖像aquiring活動的作品在這個意義上更好,它並返回,但它忽略了EXTRA_OUTPUT -setting並返回只有在onActivityResult -call的小圖像。在手機掛在電腦上時檢查ddms控制檯我看到手機正在將圖像存儲在SD卡上,但路徑沒有傳回給我的應用程序。它開始看起來像沒有可靠的方式來使用相機的意圖,並找回合理大小的圖像。壞,壞,壞。

回答

1

經過一番研究,測試和純粹的運氣,我設法解決了這個問題。

如果Intent的EXTRA_OUTPUT選項包含指向設備內部存儲器的文件URI,則調用將失敗。它如何失敗,取決於設備。 HTC Desire在表面上工作正常,但無法返回全尺寸圖像。另一方面Google N1拒絕離開攝像機活動。

當我將文件URI更改爲指向存儲卡時,它對Desire和Google N1都起到了很好的作用。

綜上所述:存儲全尺寸圖像的路徑必須指向SD卡。

+0

那麼有沒有辦法避免SD卡?如果它不可用,那麼你不能獲得全尺寸的圖像?我面臨類似的問題。這裏是我的帖子http://stackoverflow.com/questions/4632231/is-there-any-way-to-store-full-size-image-returned-from-camera-activity-in-intern – Pritam 2011-01-08 03:52:31