2011-05-27 19 views
2

我已經寫的代碼塊插入到通過Java程序Android裝置圖片庫新圖像,請看下面的代碼,問題的Android中在MediaStore存儲圖像

ContentValues values = new ContentValues(); 
values.put(Images.Media.TITLE, "title"); 
values.put(Images.Media.BUCKET_ID, "test"); 
values.put(Images.Media.DESCRIPTION, "test Image taken"); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); 
OutputStream outstream; 
try { 
    outstream = getContentResolver().openOutputStream(uri); 
     receivedBitmap.compress(Bitmap.CompressFormat.JPEG, 70, outstream);    
     outstream.close(); 
     alertDialog.showMessage("Image Stored Successfully", "Media"); 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri)); 
    } catch (Exception e) {       

圖像是完全存儲,但問題是我無法立即查看圖像。我需要關閉並打開設備以查看圖像。任何人都可以幫我解決這個問題嗎?

編輯:嗨Aleadam,感謝您的重播,請檢查下面

m_pScanner = new MediaScannerConnection(this, 
      new MediaScannerConnectionClient() { 
       public void onMediaScannerConnected() { 
        m_pScanner.scanFile(returnUrl, null /*mimeType*/); 
       } 

       public void onScanCompleted(String path, Uri uri) { 
        if (path.equals(returnUrl)) { 
         ImageViewActivity.this.runOnUiThread(new Runnable() { 
          public void run() { 

          } 
         }); 
         m_pScanner.disconnect(); 
        } 
       } 

     }); 
     m_pScanner.connect(); 

這不是爲我工作,它甚至沒有與MediaScanner連接我的代碼。我是否錯過了一些東西。

感謝 Rajapandian

回答

0

媒體掃描儀需要重新掃描存儲,以顯示在畫廊的形象。

尋找MediaScannerConnection API來實現它。

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

0

您可以通過代碼將圖像添加到mediadb中,而不用調用mediascanner,但是沒有新圖像的絕對路徑,圖像無法顯示。 您必須添加

values.put(MediaStore.Images.Media.DATA, "/absolute/path/to/image.jpg"); 

調用媒體掃描儀的更完整的方式,因爲媒體掃描儀還設置了oter字段(日期,有高度,.....)

警告:如果您在4.4版本之前使用Android調用媒體掃描程序始終開始掃描整個設備,這可能需要一些時間(在我的android-4.2平板電腦上使用16000張照片需要45分鐘)