2013-08-22 86 views
1
  1. 在我的應用程序

    ,我最初從庫,即加載所有的圖像(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)的Android新拍攝的照片從相機的自定義沒有出現在畫廊(媒體存儲)

  2. 用戶可以通過我的應用程序拍照,但我有一個自定義相機,即我不使用默認的手機相機拍照,我有我自己的表面視圖,我直接處理相機對象,並處理相機圖片。並將該圖像保存在自定義文件夾中。

  3. 我想新拍攝的照片在我的畫廊一旦用戶返回似乎我的應用程序

問題: 新拍攝的照片不會出現在我裝有MediaStore.Images.Media光標.EXTERNAL_CONTENT_URI

只有當我重新安裝應用程序並強制重新掃描時,問題才消失。

我該如何解決這個問題?我希望立即拍攝的每張照片都會出現在我的光標中?

我也做了一些researhc,但不要告訴我用startactivity解決方案contentvalues像下面

startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 

這不起作用,因爲再次,我有我自己的相機,我沒有使用從手機

默認攝像頭的活動我也嘗試

getContentResolver().notifyChange(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null); 

這不工作,要麼

有人可以幫忙嗎?

感謝

回答

7

您只需發送一個廣播「ACTION_MEDIA_SCANNER_SCAN_FILE」,以便介體掃描儀可以掃描您保存的圖像。

Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
mediaScanIntent.setData(uri); 
sendBroadcast(mediaScanIntent); 

只需設置新創建的圖像的uri。:)

+0

你在哪裏需要補充的?在之前: 遊標cursor = getContentResolver()。query(Media.EXTERNAL_CONTENT_URI ??? –

0

是的,你是真的,你需要提供新創建的文件到MediaStore。

MediaScannerConnection會幫助你。

MediaScannerConnection爲應用程序提供了一種方法,讓應用程序將新創建的或下載的媒體文件傳遞給媒體掃描器服務。媒體掃描儀服務將從文件中讀取元數據,並將 文件添加到媒體內容提供商。 MediaScannerConnectionClient 爲媒體掃描器服務提供接口,以將新掃描文件的Uri 返回給MediaScannerConnection 類的客戶端。

0

這適用於現在:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ 

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + outPath))); 

}else{      

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + outPath))); 

} 
相關問題