Android查找SD卡上的文件
我正在开发一个 MP3 应用程序,我想在其中索引 SDCard 上的文件。最好的方法是什么?
我的想法。当应用程序第一次启动时搜索文件,并为 SDCard 状态更改意图注册一个广播接收器,并在广播该意图时搜索文件。
但在这种情况下,如果我的广播接收器在 10 秒内没有返回,ANR 就会出现。
寻找更好、更安全的想法。谢谢。
I'm working on a MP3 application in which I'd like to index the files on my SDCard. What is the best way to do it?
My Idea. Search for files when the application is started for the first time and register a broadcast receiver for the SDCard state change intents and search for the files whenever the intent is broadcasted.
But in this case the ANR would show up if my broadcast receiver doesn't return within 10 seconds.
Looking for better and failsafe ideas. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
同意 Chris 的观点,MediaScanner 会为您查找音乐,填充 MediaStore 数据库。下面是一些查找音乐条目的代码:
“数据”字段包含一个可与 MediaPlayer 一起使用的句柄。
Agree with Chris, MediaScanner finds music for you, populating the MediaStore database. Here's some code to look up a music entry:
The "data" field contains a handle you can use with MediaPlayer.
为了避免 ANR,您需要在 UI 线程之外进行搜索。由于 SD 卡可能很大,您可能希望在服务中而不是在前台活动中执行此操作,以便用户可以在搜索正在进行时使用其设备执行其他操作。
但是 android 已经找到并索引了受支持的媒体文件,因此您应该看看是否可以利用内置的 MediaScanner 功能。
To avoid the ANR you need to do the search outside the UI thread. As SD cards can be big, you probably want to do it in a service rather than in your foreground activity so that the user can use their device for other things while the search is ongoing.
But android already finds and indexes supported media files, so you should see if you can leverage the built-in MediaScanner stuff.