android - 从 SD 卡中获取歌曲的最佳方法
问题描述
创建 Android 音乐播放器的最佳方法是什么?我已经阅读了各种教程,其中一些教程使用自定义方法获取,它收集所有文件,并将扩展名为 '.mp3' 的文件添加到 ArrayList()<> 中,还有一些正在使用 MediaStore。哪一个是最好的方法?
如果我每次打开应用程序时都使用递归方法,它会执行其任务并将结果存储在 ArrayList()<> 中,这需要时间,另一方面,我没有尝试 MediaStore 方法。那么它是好的吗?我应该去吗?
解决方案
您正确地遍历存储系统中的所有文件并存储相关文件始终是一项繁重的任务,而不是访问专门为特定任务设计的系统。访问 MediaStore 是获取本地媒体文件的推荐方法。请参阅以下从我们的社区成员页面之一挑选的代码
ContentResolver cr = getActivity().getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0";
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
Cursor cur = cr.query(uri, null, selection, null, sortOrder);
int count = 0;
if(cur != null)
{
count = cur.getCount();
if(count > 0)
{
while(cur.moveToNext())
{
String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA));
int songId = cur.getColumnIndex(MediaStore.Audio.Media._ID);
int songTitle = cur.getColumnIndex(MediaStore.Audio.Media.TITLE);
// Add code to get more column here
// Save to your list here
}
}
}
cur.close();
推荐阅读
- c# - Xamarin ODBC 连接
- python - 在厨师食谱中执行 requirements.txt 文件以安装 python 模块的正确方法是什么?
- bash - 使用 grep 或 ack 可靠地检查 wget 日志中的错误
- python-3.x - 如何将特征提取 (.wav) 形成文件夹和子文件夹以用作神经网络的输入?
- css - 双边框 CSS
- c++ - 如何使用枚举将 char 值映射到 int
- powershell - -OutVariable 和变量赋值之间是否存在功能差异?
- javascript - 根据 DOM 返回调用数组值
- google-cloud-storage - 为什么我需要登录才能访问 Google Cloud Storage 中的已发布数据
- excel - 我需要一种使用 excel 向某些用户发送直接消息的方法