Android Mediascanner实现机制

转自:http://www.devdiv.com/forum.php?mod=viewthread&tid=44870&extra=page%3D3%26filter%3Ddigest%26digest%3D1%26digest%3D1 

以下内容是我在修改Android1.6 Mediascanner bug的时候一点点总结,仅供参考。

Mediascanner扫描文件的方式共分两种:全盘文件扫描、单一文件扫描

全盘文件扫描:
底层mediascanner.cpp通过C语言的API将文件信息(包括文件被修改时间)通过JNI传递给Java层的MediaScanner.java。
再由MediaScanner.java将文件信息写入媒体数据库。

单一文件扫描:
Java层应用调用MediaScanner.java扫描单一文件的函数,该函数通过Java的API获取文件被修改时间,并写入媒体数据库。MP3下载结束后,DownloadService.java 调用MediaScanner.java扫描单一文件的函数,又因为Java的API获取文件被修改时间与C语言API获取的时间单位不一致,所以导致文件下载结束后写入数据库的文件被时间比实际值大出1000倍。


修改方案
在写入数据库前,先将文件被修改时间减小1000倍,然后在写入媒体数据库。

你可能感兴趣的:(android,移动开发,职场,休闲)