2011-03-07 60 views
12

我正在使用攝像機活動捕捉圖片。我用MediaStore.EXTRA_OUTPUT額外的參數調用它。圖像被正確保存到提供的路徑,並將其保存到圖庫文件夾中,以便我可以在「圖庫」應用程序中查看圖像 - 我可以避免這種情況嗎?攝像機意圖/活動 - 避免保存到畫廊

... 
File file = new File(Environment.getExternalStorageDirectory(), "Test.jpg"); 
iImageOutputUri = Uri.fromFile(file); 

// Start camera intent to capture image 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, iImageOutputUri); 
startActivityForResult(intent, CAPTURE_IMAGE); 
... 

感謝

+0

+1爲好問題。我一直在想,爲什麼我所有使用相機的應用程序都將圖片保存在圖庫中。 – Chris 2011-03-07 15:58:12

+3

我得出的結論是,你無法真正預測相機活動的確會發生什麼。它部分取決於如何定製android版本(因此是自定義相機活動等)。解決這個問題的唯一方法是編寫自己的相機活動。對我來說,這是解決所有怪癖並且不使用任何黑客的最簡單方法。 – Audrius 2011-03-07 17:11:19

+3

嗨Audrius,我同意你 - 它取決於設備 - 在一些手機上,它也將圖像保存到圖庫(例如LG-P500),有些則不是(例如三星Nexus S)。攝像機活動的許多方面都很糟糕,它不允許指定參數,如最小/最大圖像質量,這完全取決於用戶,它不能將緩衝區中的JPEG返回,例如,進一步處理等等。使用起來非常簡單,但不如它可以。在下一個項目中,我會做我自己的相機處理...再見 – STeN 2011-03-08 04:57:46

回答

-3

我不相信你能避免這種情況。圖庫應用程序通過SD卡查找圖像並自動顯示它們。

+2

這不是重點。重點是圖像實際上保存了兩次:一次在EXTRA_OUTPUT提供的位置加上一次默認位置。這是OP想要避免的 – matteo 2011-12-28 15:23:44

0

如何保存非圖像擴展名的圖像?像michael.photo而不是michael.jpg/png等。像這樣的方式畫廊應用程序不會帶他們進來,我見過很多這樣的應用程序保持例如這樣做。

2

只需用下面的代碼

File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "Test.jpg"); 

getExternalFilesDir()的說明替換您的代碼

File file = new File(Environment.getExternalStorageDirectory(), "Test.jpg"); 

返回位於主外部文件系統的目錄的絕對路徑(即在Environment.getExternalStorageDirectory())的某個地方應用ion可以放置它擁有的持久性文件。這些文件是應用程序的內部文件,對於用戶而言通常不可見爲媒體。