Android媒体扫描没效果

JPF1024 2015-10-10 12:39:03
写了一个媒体扫描,发现没效果,是保存图片到本地的一个程序.

图片保存在/storage/emulated/0/xxxx/123.jpg

我扫描的是/storage/emulated/0/xxxx/,但是执行保存之后,发现在图库(系统图库)里面没有那个文件夹.不知道是因为什么,求解.

另外我想实现,第一次扫描文件夹,后面如果在新增文件(下载新的图片)就不用扫描文件夹了,请问怎么判断文件夹已经被扫描过了呢?

看了很多网上的很多都没法扫描,求可用扫描方法。


...全文
264 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
JPF1024 2015-10-19
  • 打赏
  • 举报
回复
已经实现了,大概实现如下: 把图片保存到: /存储盘/Picture/xxxx[你的应用名字] 这个目录下面,然后在通知系统进行扫描即可。谢谢楼上各位的回复。
JPF1024 2015-10-10
  • 打赏
  • 举报
回复
获取保存路径:

 /**
     * 获取SD卡或者内置存储空间可以保存资源的路径.
     * <em>此处未实现对存储空间是否充足进行判断</em>.
     *
     * @return 返回保存数据的路径, 有SD卡则是SD上的路径, 反之内置存储空间上的路径.
     */
    private String getSDPath() {
        boolean hasSDCard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
        if (hasSDCard) {
            /*return context.getExternalFilesDir(Environment.DIRECTORY_DCIM).getPath();*/
            return Environment.getExternalStorageDirectory().toString() + "/xxxxxxx";
        } else
            return "/data/data/com.xxxxxx.xxx123xxx/xx123456";
    }

原来的扫描方式:

//filePaths =文件的地址
MediaScannerConnection.scanFile(context,
                    new String[]{filePaths}, new String[]{"image/jpeg"},
                    new MediaScannerConnection.OnScanCompletedListener() {
                        public void onScanCompleted(String path, Uri uri) {
                            Log.i("ExternalStorage", "Scanned " + path + ":");
                            Log.i("ExternalStorage", "-> uri=" + uri);
                        }
                    });

这是扫描目录的方法,但是没效果:

/**
     * 启动MediaScanner服务,扫描媒体文件,程序通过发送下面的Intent启动MediaScanner服务。
     * 扫描指定目录
     *
     * @param dir
     */
    private void scanDirAsync(String dir) {
        Intent scanIntent = new Intent(ACTION_MEDIA_SCANNER_SCAN_DIR);
        scanIntent.setData(Uri.fromFile(new File(dir)));
        context.sendBroadcast(scanIntent);
    }
StoneHui_ 2015-10-10
  • 打赏
  • 举报
回复
引用 3 楼 dcxy0 的回复:
[quote=引用 2 楼 u014165119 的回复:] 在读取之前不是有保存的么?能确定保存成功了且是保存在Environment.getExternalStorageDirectory().toString()+ "/xxxxxxx"这个目录下么?直接在设备上打开对应路径看看。
路径里面有图片,但是就是没扫描上,不知道是不是因为保存图片可能有延时的作用。[/quote] 嗯,有些路径图库没扫描出来算正常吧。文件夹已经被扫描过估计只能自己保存了。
JPF1024 2015-10-10
  • 打赏
  • 举报
回复
引用 2 楼 u014165119 的回复:
在读取之前不是有保存的么?能确定保存成功了且是保存在Environment.getExternalStorageDirectory().toString()+ "/xxxxxxx"这个目录下么?直接在设备上打开对应路径看看。
路径里面有图片,但是就是没扫描上,不知道是不是因为保存图片可能有延时的作用。
StoneHui_ 2015-10-10
  • 打赏
  • 举报
回复
在读取之前不是有保存的么?能确定保存成功了且是保存在Environment.getExternalStorageDirectory().toString()+ "/xxxxxxx"这个目录下么?直接在设备上打开对应路径看看。
luosiye312 2015-10-10
  • 打赏
  • 举报
回复
在4.4之前和之后,google规定了不允许第三方应用向系统发送广播,所以,4.4+都无法进行扫描。
解决办法:
1:先做版本判断
public static boolean hasKitkat(){
//Build.VERSION.KITKAT--Android4.4
return Build.VERSION.SDK_INT >= 19;
}
2:浏览图片
public static void scanPhotos(String filePath, Context context) {
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(filePath));
intent.setData(uri);
context.sendBroadcast(intent);
}

private void refreshPicture(){
if(hasKitkat()){
MediaScannerConnection.scanFile(this,
new String[] {currFilePath}, new String[]{ "image/*" },
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
sendBroadcast(new Intent(android.hardware.Camera.ACTION_NEW_PICTURE, uri));
sendBroadcast(new Intent("com.android.camera.NEW_PICTURE", uri));
}
});
scanPhotos(currFilePath, this);
}else{
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.parse("file://" + currFilePath)));
}
}
直接在调用refreshPicture()就可以了。
我不是很帅 2015-10-10
  • 打赏
  • 举报
回复
MediaScannerConnection.scanFile(mContext, new String[] {filePath}, null, null); filepath 要更新的路径
JPF1024 2015-10-10
  • 打赏
  • 举报
回复
http://www.stormzhang.com/android/2014/07/24/android-save-image-to-gallery/ 找了一个例子,回去试试
JPF1024 2015-10-10
  • 打赏
  • 举报
回复
引用 4 楼 u014165119 的回复:
[quote=引用 3 楼 dcxy0 的回复:] [quote=引用 2 楼 u014165119 的回复:] 在读取之前不是有保存的么?能确定保存成功了且是保存在Environment.getExternalStorageDirectory().toString()+ "/xxxxxxx"这个目录下么?直接在设备上打开对应路径看看。
路径里面有图片,但是就是没扫描上,不知道是不是因为保存图片可能有延时的作用。[/quote] 嗯,有些路径图库没扫描出来算正常吧。文件夹已经被扫描过估计只能自己保存了。[/quote] 图片已经保存在里面了,只是在图片库里面看不到。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧