我目前正在进行的一个项目需要应用程序来发现 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();
}
}
似乎媒体扫描仪(它在我的设备启动时运行)没有检测到我的大部分音频库。难道我做错了什么?
我只是想快速有效地找到所有音轨、音频专辑和音频艺术家。如果 MediaStore 不能帮助我,那么我担心我将不得不实现某种形式的文件扫描器来遍历目录结构并构建我自己的数据库,但我不想这样做;)
任何想法将不胜感激。
谢谢。