gpt4 book ai didi

Android MediaStore.Audio 不加载所有 MetaTags

转载 作者:行者123 更新时间:2023-11-29 01:22:54 25 4
gpt4 key购买 nike

为了在 android 设备上获取所有本地音乐文件,我正在使用 ContentResolver,从 MediaStore.Audio 获取数据。这是我如何加载所有标题及其艺术家的示例:

ContentResolver musicResolver = act.getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0";
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
Cursor musicCursor = musicResolver.query(musicUri, null, selection, null, sortOrder);

if(musicCursor!=null && musicCursor.moveToFirst()){
int titleColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE);
int artistColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.ARTIST);

do {
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
//save them somewhere
}while (musicCursor.moveToNext());
}

所以这段代码适用于我拥有的大约 75% 的音乐。

但是有轨道,其中艺术家(以及一些其他值,如 artistKey、Track、Cover 等)返回 null。但是标题、album_name 和 artistId 加载正确。

标签应该是正确的(正确显示在计算机和其他音乐应用程序上)。此外,格式与正在播放的轨道没有什么不同。

你们中有没有人有一天遇到同样的问题并解决了这个问题?所有那些丢失的元标签甚至都没有用 MediaMetadataRetriever 加载。我无法解释我的某些文件有什么问题以及为什么其他应用程序可以正确加载它们。

如果需要,我可以在某处上传工作和不工作的音乐文件。

最佳答案

管理如何去做。

有些专辑只在其中一个(主要是第一首或最后一首)轨道中存储了最多的信息(艺术家姓名、专辑封面),而不是全部。这不是很常见,但我大约 20% 的专辑都有这个,即使是购买的。

因此,如果您正在加载/显示这些专辑中的一张,则需要遍历所有专辑轨道,直到找到一张专辑,其中存储了您在其他专辑中丢失的信息。由于我的其他代码,我让它有点不同,但我认为这是最容易理解的方式。

关于Android MediaStore.Audio 不加载所有 MetaTags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35744233/

25 4 0
文章推荐: ios - UINavigationBar 和 UITabbar tintColor 在 iPhone6Plus 中不起作用
文章推荐: ios - 将 Spotify SDK 与其他框架集成
文章推荐: android - Google Play 中提供的 Android 应用测试版
文章推荐: android - 从 Parse.com 检索数据到 ArrayList