2011-05-27 56 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分钟)