`
dengbaoleng
  • 浏览: 1134183 次
文章分类
社区版块
存档分类
最新评论

Android开发——MediaProvider源码分析(一)

 
阅读更多

MediaProvider包括五个类:

* com.android.providers.media.MediaProvider
* com.android.providers.media.MediaScannerCursor
* com.android.providers.media.MediaScannerReceiver
* com.android.providers.media.MediaScannerService
* com.android.providers.media.MediaThumbRequest

1.MediaProvider

此类继承ContentProvider,实现一个内容提供者。主要用于创建媒体库的数据库表。有自己创建过ContentProvider的同学相信都比较清楚的。

特别说明一下在MediaProvider中有个广播接收者,代码如下:



此接收者是用来接收Sdcard卸载的广播。当Sdcard从手机中分离出来的时候,Sdcard中的媒体文件相对应的数据库将无法操作。



注意移除数据库并非删除数据库文件(*.db),mDatabases是一个HashMap,移除的含义是暂时无法操作,也可以说说是查询返回的数据都是空的。

2.MediaScannerCursor

一个自定义游标,用来查询媒体文件的扫描状态。主要有一个volume字段,用来区分是内置媒体数据库还是Sdcard的媒体数据库。

3.MediaScannerReceiver

此类实现广播接收者。接收到广播的时候对手机的媒体文件进行扫描。



扫描分为两种三种情况:

a,启动完毕扫面手机内存中的媒体文件

b.sdcard挂载完毕扫描扩展卡的媒体文件

c,扫描单个文件

应用实例:我们可以发送不同的广播让系统去扫描媒体文件。当需要扫描单个文件的时候需要设置一些参数,如下:





接着看一下scan和scenFile两个方法:



两个方法都是启动MediaScannerService去扫描媒体文件的。

关于MediaScannerSerive且听下回分解。
分享到:
评论

相关推荐

    android MediaProvider和MediaScanner详解

    关于Android媒体存储和手机数据库扫描流程以及优化的部分代码贴图

    MediaProvider

    自己总结学习MediaProvider的一些重要函数,为了以后学习方便

    Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    主要介绍了Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法,实例分析了Android4.4下针对读写限制的修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    media provider源码

    media provider源码,原生系统代码,通过ContentProvider实现了数据管理功能。

    apk文件 MediaProvider(电视直播视频)

    apk文件 MediaProvider(电视直播视频)apk文件 MediaProvider(电视直播视频)apk文件 MediaProvider(电视直播视频)apk文件 MediaProvider(电视直播视频)apk文件 MediaProvider(电视直播视频)apk文件 ...

    Mediaprovider简介

    Mediaprovider的简单说明。 MediaProvider包括五个类: com.android.providers.media.MediaProvider com.android.providers.media.MediaScannerCursor com.android.providers.media.MediaScannerReceiver ...

    Android 获取音乐文件的信息

    Android 获取音乐文件的信息 Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。

    《深入理解Android》卷Ⅱ

    第1章 搭建Android源码工作环境 1.1 Android系统架构 1.2 搭建开发环境 1.2.1 下载源码 1.2.2 编译源码 1.2.3 利用Eclipse调试system_process 1.3 本章小结 第2章 深入理解Java Binder和MessageQueue 2.1 ...

    Android 4.4及以上版本写入外置SD卡问题

    那么我们要怎么来获取到外置SD卡的路径,首先需要A判断是否挂载了sdk,同样的Environment.getExternalStorageState()这个方法判断的只是机身内存空间,需要额外写一个工具类进行判断。这里要用到的是java的反射机制

    Android Music

    Android源码的Music应用相关代码不算多,packages/apps/Music是关于UI界面的,\packages\providers\MediaProvider关于数据库的,数据库文件放在data/data/com.android.providers.media, 这里面有两个或更多个.db文件...

    Android中通过MediaStore获取音乐文件信息方法

    Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的...

    深入理解android 卷II 第7章

    深入理解android 卷II 第7章 ContentProvider深入理解

    Android APP与媒体存储服务的交互

    简介:本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner、MediaProvider以及媒体信息解析等部分),包括如何把 APP 新增或修改的文件更新到媒体数据库、如何在多媒体应用中隐藏 APP...

    Android编程获取图片和视频缩略图的方法

    从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位 置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接...

    Android中扫描多媒体文件操作详解

    Android提供了一个很棒的程序来处理将多媒体文件加入的媒体库中。这个程序就是MediaProvider,现在我们简单看以下这个程序。首先看一下它的Receiver 代码如下:  <receiver android:name=”MediaScannerReceiver”>...

    SEAndroid问题快速分析

    快速定位、分析和解决Android系统SELinux相关的权限问题。

    Android获取相册图片-实现选择相册图片功能

    下面我们来看一下媒体库的内容提供者的URI(源码地址) 媒体库Uri 图片MediaStore.Images.Media.EXTERNAL_CONTENT_URI 音频MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 视频MediaStore.Video.Media.EXTERNAL_CONTENT...

    完美解决android M上锁屏情况下,禁止pc通过MTP访问手机存储单元

    1、问题解决主要文件:/m8976/packages/providers/MediaProvider/src/com/android/providers/media/MtpService.java 需要在MtpService.java中updateDisabledStateLocked 方法添加锁屏情况限制: final ...

Global site tag (gtag.js) - Google Analytics