【发布时间】:2021-01-08 14:24:19
【问题描述】:
我一直忙于尝试将一首新歌曲插入 Android 10 MediaStore 以获取音频...其中大部分都是开箱即用的,因此我可以播放歌曲、查看其标题等。但是,当我在 MediaStore 中查询手机上的所有音频时,歌曲出现了,但 MediaStore.Audio.Media.ARTIST 列突然变成了 "<unknown>",而不是我之前插入的字符串。我使用以下代码插入数据库:
val contentValues = ContentValues()
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, song.filename)
contentValues.put(MediaStore.MediaColumns.TITLE, song.title)
contentValues.put(ARTIST, song.interpret)
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg")
contentValues.put(MediaStore.MediaColumns.SIZE, song.length)
contentValues.put(
MediaStore.MediaColumns.DATE_ADDED,
Calendar.getInstance().time.toString()
)
...
val contentUri: Uri = Media.EXTERNAL_CONTENT_URI
uri = contentResolver.insert(contentUri, contentValues)
我现在怀疑我插入的艺术家必须在其他一些包含已知艺术家的 MediaStore-Table 中“已知”,或者 Android 会扫描手机本身,可能会发现新存储的 mp3 文件中没有艺术家ID3 元数据?还是您认为我的代码还有其他问题?
跟进: 我做了一些实验,确实,正如@Theo 建议的那样,android 扫描会拾取所有这些值,甚至纠正它们,以防我自己的插入与文件元数据不同。
【问题讨论】:
标签: android kotlin mediastore