10.4.1 MediaScannerConnection介绍
最后更新于:2022-04-02 05:54:23
通过前面的介绍,我们知道MSS支持以广播方式发送扫描请求。除了这种方式外,多媒体系统还提供了一个MediaScannerConnection类,通过这个类可以直接跨进程调用MSS的scanFile,并且MSS扫描完一个文件后会通过回调来通知扫描完毕。MediaScannerConnection类的使用场景包括浏览器下载了一个媒体文件,彩信接收到一个媒体文件等,这时都可以用它来执行媒体文件的扫描工作。
下面来看这个类输出的几个重要API,由于它非常简单,所以这里就不再进行流程的分析了。
**MediaScannerConnection.java**
~~~
public class MediaScannerConnection implementsServiceConnection {
//定义OnScanCompletedListener接口,当媒体文件扫描完后,MSS调用这个接口进行通知。
publicinterface OnScanCompletedListener {
public void onScanCompleted(String path, Uri uri);
}
//定义MediaScannerConnectionClient接口,派生自OnScanCompletedListener,
//它增加了MediaScannerConnection connect上MSS的通知。
public interface MediaScannerConnectionClient extends
OnScanCompletedListener {
public void onMediaScannerConnected();//连接MSS的回调通知。
public void onScanCompleted(String path, Uri uri);
}
//构造函数。
publicMediaScannerConnection(Context context,
MediaScannerConnectionClient client);
//封装了和MSS连接及断开连接的操作。
publicvoid connect();
publicvoid disconnect()
//扫描单个文件。
publicvoid scanFile(String path, String mimeType);
//我更喜欢下面这个静态函数,它支持多个文件的扫描,实际上间接提供了文件夹的扫描功能。
publicstatic void scanFile(Context context, String[] paths,
String[] mimeTypes,OnScanCompletedListener callback);
......
}
~~~
从使用者的角度来看,本人更喜欢静态的scanFile函数,一方面它封装了和MSS连接等相关的工作,另一方面它还支持多个文件的扫描,所以如没什么特殊要求,建议读者还是使用这个静态函数。
';