Android-MediaScanner&MediaProvider学习一

前言:

  安卓手机中有一个google原生的对媒体文件的操作-MediaProvider。这个服务是通过apk的方式运行的,开机自启动。这个服务的主要功能是维护一个媒体文件的数据库。但有新的媒体文件生成时将其插入数据库,当有媒体文件被删除时,从数据库删除相应的记录,当访问图库等app时从数据库读取响应的数据……

  ps: MediaProvider是原生的服务,三方app可以直接调用进行插入、删除、查询等功能,也可以自己编写相应的方法去实现此功能。

 

维护的数据库:

private static final String INTERNAL_DATABASE_NAME = "internal.db"; // 这个是系统分区的文件信息,用户拿不到

private static final String EXTERNAL_DATABASE_NAME = "external.db"; // 这个是用户能看到的存储区的文件信息,即包含了手机内置存储,还包含了SD卡,用户可以拿到

数据库在手机中的目录为: /data/data/com.android.providers.media/databases

root后的机器可以直接把数据库pull出来用sqlitebrowser看里面的内容。

从上表可以看到数据库中存放的数据,例如图片的存放路径、大小等信息,视频的mine-type、时长、分辨率等信息。

 

MediaProvider.apk了解:

具体代码的路径: /packages/providers/MediaProvider/

主要实现的服务如下:

MediaScannerReceiver: 继承了BroadcastReceiver类,主要响应APP发送的广播命令,并开启MediaScannerService。

MediaScannerService: 继承了Service,主要是处理app发送的请求,对相应目录进行扫描,并获取媒体文件的metadata,最后将数据写入数据库,或者从数据库删除相应记录。

MediaProvider: 继承了ContentProvider,主要是负责对数据库的查询等操作。

 

这篇文章先对MediaScanner&MediaProvider有一个初步认识,想要继续了解具体实现的同学请看博客: https://blog.csdn.net/cheriyou_/article/details/90772051

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值