Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android新拍摄的自定义相机照片未显示在gallery(媒体商店)中_Android_Camera_Gallery_Android Mediascanner - Fatal编程技术网

Android新拍摄的自定义相机照片未显示在gallery(媒体商店)中

Android新拍摄的自定义相机照片未显示在gallery(媒体商店)中,android,camera,gallery,android-mediascanner,Android,Camera,Gallery,Android Mediascanner,在我的应用程序中,我首先从库中加载所有图像,即(MediaStore.images.Media.EXTERNAL\u CONTENT\u URI) 用户可以通过我的应用程序拍照,但我有一个自定义摄像头,即我不使用默认的手机摄像头拍照,我有自己的表面视图,我直接处理摄像头对象,并处理摄像头图片。我将此图像保存在自定义文件夹中 我希望在用户返回我的应用程序后,新拍摄的照片会显示在我的图库中 问题: 新拍摄的照片不会出现在我加载了MediaStore.Images.Media.EXTERNAL\u C

在我的应用程序中,我首先从库中加载所有图像,即(MediaStore.images.Media.EXTERNAL\u CONTENT\u URI)

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

  • 我希望在用户返回我的应用程序后,新拍摄的照片会显示在我的图库中

  • 问题: 新拍摄的照片不会出现在我加载了MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI的光标中

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

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

    我做了一些研究,但不要告诉我startactivity解决方案的contentvalues,如下所示

     startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    
    这不起作用,因为我有自己的相机,我没有使用手机上的默认相机活动

    我也试过了

     getContentResolver().notifyChange(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null);
    
    这也不行

    有人能帮忙吗


    谢谢

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

    我会帮助你的

    MediaScannerConnection为应用程序提供了一种通过新 已创建或下载媒体文件到媒体扫描程序服务。这个 媒体扫描服务将从文件中读取元数据并添加 将文件发送到媒体内容提供商。MediaScannerConnectionClient 为媒体扫描程序服务提供返回Uri的接口 将新扫描的文件发送到MediaScannerConnection的客户端 班级


    是的,您是对的,您需要向MediaStore提供新创建的文件

    我会帮助你的

    MediaScannerConnection为应用程序提供了一种通过新 已创建或下载媒体文件到媒体扫描程序服务。这个 媒体扫描服务将从文件中读取元数据并添加 将文件发送到媒体内容提供商。MediaScannerConnectionClient 为媒体扫描程序服务提供返回Uri的接口 将新扫描的文件发送到MediaScannerConnection的客户端 班级


    您只需要发送一个广播“ACTION\u MEDIA\u SCANNER\u SCAN\u FILE”,这样mediascanner就可以扫描您保存的图像

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

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

    您只需发送一个广播“ACTION\u MEDIA\u SCANNER\u SCAN\u FILE”,以便MEDIA SCANNER可以扫描您保存的图像

     Intent mediaScanIntent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
     mediaScanIntent.setData(uri);
     sendBroadcast(mediaScanIntent);
    
    只需设置新创建图像的uri即可。:)

    这一方法目前有效:

    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)));
    
    }
    
    目前这是可行的:

    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)));
    
    }
    

    您需要在哪里添加这些内容?就在:Cursor Cursor=getContentResolver().query(Media.EXTERNAL\u CONTENT\u URI???)之前?需要在哪里添加它?就在:Cursor Cursor=getContentResolver().query(Media.EXTERNAL\u CONTENT\u URI???)之前???