企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
通过前面的介绍,我们知道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连接等相关的工作,另一方面它还支持多个文件的扫描,所以如没什么特殊要求,建议读者还是使用这个静态函数。