Android 机型适配-图片或者视频保存到相册立即显示问题

版权声明:本文出自Jinguangyue的博客,转载必须注明出处。 http://blog.csdn.net/coderyue https://blog.csdn.net/CoderYue/article/details/78840986

近期遇到了一个适配问题,保存图片或者是视频之后立即在相册显示,方便用户做下一步的操作这样一个功能, 描述一下过程中的问题和最后采用的解决方案吧

普通广播通知手机刷新方式

要想将图片保存到相册中并且立即显示, 查询到的博客和文档是发送广播通知手机刷新:

差不多是这样的代码:

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(path)));

还有的会将图片信息插入数据库, 差不多这样的代码:

ContentValues values = new ContentValues(4);
values.put(MediaStore.Video.Media.TITLE, "");
values.put(MediaStore.Video.Media.MIME_TYPE, minetype);
values.put(MediaStore.Video.Media.DATA, path);
values.put(MediaStore.Video.Media.DURATION, duration_int);
        context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);

以上代码我也是在每个手机上尝试, 但是还是有个别手机不通过, 图片并不会立即显示到相册,比如魅蓝 e, oppo a357, vivo y66 , 这个时候我在想, 是否有统一方式? 此时我想到了最屌p图工具美图秀秀, 它是怎么存储的呢, 在经过每个手机下载美图秀秀保存图片查看之后, 我发现美图秀秀把图片存在了这样一个文件夹: 手机存储/DCIM/Camera

这确实是大部分手机相册存储的位置,把图片存储到这里然后执行上面的插入数据库, 然后广播通知刷新是可以适配大部分手机的,但是上述 魅蓝 e, oppo a357, vivo y66 这三种手机我见过的还不行, 因为它们的相册路径不是: 手机存储/DCIM/Camera

个别蛋疼机型相册路径

魅蓝 e , oppo a357, vivo y66: 手机存储/DCIM,并没有子路径Camera

早期我记着有的在 手机存储/Pictrues 下面, 也能说的过去吧

还有一个更蛋疼的不知道咋想的, vivo x9, 这部手机我司有一部, 它的路径是:手机存储/相机, 中文的路径, 中文本地化路径都搞成中文? 这个时候我尝试把视频存储到这个目录, 突然目录名字增加了一个: 录像。 惊!为啥又整出来一个目录?

最后采用的方案

其实这个时候如果你想实现保存的相册并且立即显示的目的, 可以针对每个机型进行不同路径的存储, 但是我没有采用, 我采用了存储到 手机存储/DCIM/Camera 并且将信息插入到数据库的方式, 这样操作可以满足大部分的机型在相册立即显示, 还有一个好处是其他应用读取手机上的图片或者是视频都是从数据库读取, 这样如果快手读取视频是能读取到我们保存的视频的, 我觉得这样够用了,我的小米手机就是用的 手机存储/DCIM/Camera 标准路径, 小米非常赞! 这里也只能呼吁各大手机厂商定制安卓系统的时候多优化一些性能啊, 速度, 使用方便上, 用户体验上,用户安全上, 改默认相册路径干什么啊, 毫无用处, 增加开发难度, 影响用户体验, 因为这样会导致难适配的手机厂商应用商店开发者们都不想提交应用上去!≧▽≦

猜你喜欢

转载自blog.csdn.net/CoderYue/article/details/78840986