android 下载保存视频到本地相册刷新 机型适配问题
android 下载保存视频到本地相册刷新问题
一般我们保存视频文件到本地
使用一下方法扫描到相册,通知相册更新
MediaScannerConnection.scanFile(context, new String[]{destFile.getPath()}, null, null);
或者通过全局广播的方式,建议使用以上单个文件扫描通知即可。
但是发现vivo 手机只能在照相机目录下才能更新 所以我们需要单独处理vivo手机
//在picture目录下新建一个文件夹
//手机存储/Pictrues 大部分手机通用
private static final String ROOT_PATH =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/app名字目录";
// 手机存储/DCIM/Camera下 vivo 小米等手机通用 兼容大部分
private static final String ROOT_CAMERA_PATH = Environment.getExternalStorageDirectory() + File.separator + "DCIM" + File.separator + "Camera";
//手机存储/DCIM 部分手机没有Camera vivo y66等
private static final String ROOT_CAMERA_PATH_BASE = Environment.getExternalStorageDirectory() + File.separator + "DCIM";
单独处理vivo手机保存到 “手机储存/DCIM/Camera ”路径下
测试发现vivo X9手机 路径为“手机储存/相机 ”
// 手机存储/相机下 vivo X9
private static final String ROOT_CAMERA_PATH_1 = Environment.getExternalStorageDirectory() + File.separator + "相机";
以下是根据机型判断处理保存路径
String rootPath = ROOT_PATH;
String manufacturer = Build.MANUFACTURER;
if (manufacturer != null && manufacturer.length() > 0) {
String phoneType = manufacturer.toLowerCase();
String systemModel = android.os.Build.MODEL;
Log.d(TAG, "saveFileToAlbum phone_type: " + phoneType + " systemModel:" + systemModel);
switch (phoneType) {
case "huawei":
break;
case "vivo":
if ("vivo X9".equals(systemModel)) {
rootPath = ROOT_CAMERA_PATH_1;
} else if ("vivo y66".equals(systemModel) || "vivo Y66".equals(systemModel))else {
rootPath = ROOT_CAMERA_PATH_BASE ;
}else{
rootPath = ROOT_CAMERA_PATH
}
break;
case "xiaomi":
rootPath =ROOT_CAMERA_PATH ;
break;
}
}
其他机型等待测试 可一一对应处理。
vivo等手机为了兼容性处理“手机储存/DCIM/Camera ”与“手机储存/相机 ”都复制一份比较保险
“手机储存/DCIM/Camera ” 可以兼容大部分手机
具体保存方法这里就不贴代码了,就是根据缓存本地的文件copy到相关目录即可
保存完成后 使用
MediaScannerConnection 进行操作。
不同于 MediaStore.Image.Media 和广播的方式,使用 MediaScannerConnection 可以指定文件路径,支持刷新完成的回调。