没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
4页
这篇文章从系统源代码分析,讲述如何将程序创建的多媒体文件加入系统的媒体库,如何从媒体库删除,以及大多数程序开发者经常遇到的无法添加到媒体库的问题等。本人将通过对源代码的分析,一一解释这些问题。 Android中的多媒体文件扫描机制 Android提供了一个很棒的程序来处理将多媒体文件加入的媒体库中。这个程序就是MediaProvider,现在我们简单看以下这个程序。首先看一下它的Receiver 代码如下: <receiver android:name=”MediaScannerReceiver”> <intent> <actio
资源推荐
资源详情
资源评论
Android中扫描多媒体文件操作详解中扫描多媒体文件操作详解
这篇文章从系统源代码分析,讲述如何将程序创建的多媒体文件加入系统的媒体库,如何从媒体库删除,以及大多数程序开发
者经常遇到的无法添加到媒体库的问题等。本人将通过对源代码的分析,一一解释这些问题。
Android中的多媒体文件扫描机制中的多媒体文件扫描机制
Android提供了一个很棒的程序来处理将多媒体文件加入的媒体库中。这个程序就是MediaProvider,现在我们简单看以下这个
程序。首先看一下它的Receiver
代码如下:
<receiver android:name=”MediaScannerReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED” />
</intent-filter>
<intent-filter>
<action android:name=”android.intent.action.MEDIA_MOUNTED” />
<data android:scheme=”file” />
</intent-filter>
<intent-filter>
<action android:name=”android.intent.action.MEDIA_UNMOUNTED” />
<data android:scheme=”file” />
</intent-filter>
<intent-filter>
<action android:name=”android.intent.action.MEDIA_SCANNER_SCAN_FILE” />
<data android:scheme=”file” />
</intent-filter>
</receiver>
MediaScannerReceiver只接收符合action和数据规则正确的intent。
MediaScannerReciever如何处理如何处理Intent
1.当且仅当接收到action android.intent.action.BOOT_COMPLETED才扫描内部存储(非内置和外置sdcard)
2.除了action为android.intent.action.BOOT_COMPLETED 的以外的intent都必须要有数据传递。
3.当收到 Intent.ACTION_MEDIA_MOUNTED intent,扫描Sdcard
4.当收到 Intent.ACTION_MEDIA_SCANNER_SCAN_FILE intent,检测没有问题,将扫描单个文件。
MediaScannerService如何工作如何工作
实际上MediaScannerReceiver并不是真正处理扫描工作,它会启动一个叫做MediaScannerService的服务。我们继续看
MediaProvider的manifest中关于service的部分。
代码如下:
<service android:name=”MediaScannerService” android:exported=”true”>
<intent-filter>
<action android:name=”android.media.IMediaScannerService” />
</intent-filter>
</service>
MediaScannerService中的中的scanFile方法方法
代码如下:
private Uri scanFile(String path, String mimeType) {
String volumeName = MediaProvider.EXTERNAL_VOLUME;
openDatabase(volumeName);
MediaScanner scanner = createMediaScanner();
return scanner.scanSingleFile(path, volumeName, mimeType);
}
MediaScannerService中的中的scan方法方法
代码如下:
private void scan(String[] directories, String volumeName) {
// don’t sleep while scanning
mWakeLock.acquire();
ContentValues values = new ContentValues();
values.put(MediaStore.MEDIA_SCANNER_VOLUME, volumeName);
Uri scanUri = getContentResolver().insert(MediaStore.getMediaScannerUri(), values);
资源评论
weixin_38670391
- 粉丝: 7
- 资源: 956
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现多车辆车辆路径问题,用遗传算法编程,保证可用.rar
- 基于matlab实现多层极限学习机实现手写体识别,准确率超过99%.rar
- 基于matlab实现电力系统最优潮流程序,可以应用于电力市场下的最优潮流计算 适合电力系统专业的同仁使用.rar
- 串行通信的通信协议串口协议串行通信的通信协议串口协议
- Vue构建交互式的单页面应用程序Vue构建交互式的单页面应用程序
- Spring Boot快速搭建和部署应用程序
- Redis开源的高性键值存储系统广泛应用于缓存、实时消息传递
- Qt跨平台的应用程序开发框架Qt跨平台的应用程序开发框架
- 单片机是集成处理器、存储器和输入输出设备
- 深度学习机器习方法模仿人脑神经网络深度学习机器习方法模仿人脑神经网络
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功