我正在处理的项目要求应用程序发现Android设备上的所有音轨。除了曲目之外,它还必须能够按专辑和艺术家进行分组。
我找到了MediaStore内容提供程序,并着手创建一个数据库帮助程序实用程序类,以快速返回轨道,专辑和艺术家的ID。我已经能够查询返回某些结果的媒体商店,但似乎并非所有的音频信息都存储在那里。
例如,查询所有艺术家只返回9个结果,但Android音乐播放器应用程序返回27。
我使用以下代码查询艺术家:
ContentResolver resolver = getContentResolver();
String[] projection = new String[]{MediaStore.Audio.ArtistColumns.ARTIST};
Uri uri = android.provider.MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;
Cursor c = null;
try {
c = resolver.query(uri, projection, null, null, null);
}
catch (UnsupportedOperationException e) {
Log.e("DatabaseHelper", "query: " + e);
c = null;
}
if(c != null) {
while(c.isAfterLast() == false) {
Log.e("ARTIST", "NAME: " + cursor.getString(0));
cursor.moveToNext();
}
}
似乎Media Scanner(当我的设备启动时运行definatley)没有检测到我的音频库。我做错了吗?
我只是想快速有效地找到所有音轨,音频专辑和音频艺术家。如果MediaStore无法帮助我,那么我担心我将不得不实现某种形式的文件扫描程序来遍历目录结构并构建我自己的数据库,但我不想这样做;)
任何想法都会非常感激。
感谢。
答案 0 :(得分:1)
或许,您还应该查询android.provider.MediaStore.Audio.Albums.INTERNAL_CONTENT_URI以使其余部分在媒体播放器中可见。