Android最新拍摄自定义相机中的照片未出现在图库(媒体商店)

时间:2013-08-22 07:25:39

标签: android camera gallery android-mediascanner

  1. 在我的应用中,我最初加载了图库中的所有图片,即(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

  2. 用户可以通过我的应用程序拍照,但我有自定义相机,即我不使用默认手机相机拍照,我有自己的表面视图,我直接处理相机对象,并处理相机图片。我将此图像保存在自定义文件夹中。

  3. 一旦用户返回我的应用,我希望新拍摄的照片出现在我的画廊中

  4. 问题: 我用MediaStore.Images.Media.EXTERNAL_CONTENT_URI加载的光标中没有出现新拍摄的图片

    只有当我重新安装应用程序并强行重新扫描时,问题才会消失。

    我该如何解决这个问题?我希望立即拍摄的每张照片都会出现在我的光标中?

    我已经完成了一些研究,但是不要告诉我使用startactivity解决方案的内容值如下

     startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    

    这不起作用,因为我有自己的相机,我没有使用手机的默认相机活动

    我也试过

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

    这不起作用

    有人可以帮忙吗?

    由于

3 个答案:

答案 0 :(得分:7)

您只需发送广播“ACTION_MEDIA_SCANNER_SCAN_FILE”,以便mediascanner可以扫描您保存的图像。

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

只需设置新创建的图像的uri即可。 :)

答案 1 :(得分:0)

是的,您是的,您需要将新创建的文件提供给MediaStore。

MediaScannerConnection会帮助你。

  

MediaScannerConnection为应用程序提供了一种新传递方式   创建或下载媒体文件到媒体扫描仪服务。该   媒体扫描程序服务将从文件中读取元数据并添加   文件到媒体内容提供商。 MediaScannerConnectionClient   为媒体扫描程序服务提供返回Uri的界面   用于新扫描的文件到MediaScannerConnection的客户端   类。

答案 2 :(得分: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)));

}