将带有艺术家 (!) 的歌曲添加到 Android MediaStore
Adding Song with artist(!) to Android MediaStore
我一直在忙于尝试将新歌曲插入 Android 10 MediaStore 以获取音频...大部分都是开箱即用的,所以我可以播放这首歌,看看它标题等。但是,当我在 MediaStore 中查询 phone 上的所有音频时,这首歌出现了,但是列 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 扫描 phone 本身并可能发现新存储的 mp3 文件的 ID3 元数据中没有艺术家?或者您认为我的代码还有其他问题吗?
跟进:
我做了一些实验,确实,正如@Theo 所建议的那样,android 扫描会获取所有这些值,甚至会更正它们,以防我自己的插入与文件元数据不同。
不确定为什么要手动添加曲目,因为 android 扫描会负责填充所有必要的字段。下面是 table 文件(部分)的屏幕截图
我一直在忙于尝试将新歌曲插入 Android 10 MediaStore 以获取音频...大部分都是开箱即用的,所以我可以播放这首歌,看看它标题等。但是,当我在 MediaStore 中查询 phone 上的所有音频时,这首歌出现了,但是列 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 扫描 phone 本身并可能发现新存储的 mp3 文件的 ID3 元数据中没有艺术家?或者您认为我的代码还有其他问题吗?
跟进: 我做了一些实验,确实,正如@Theo 所建议的那样,android 扫描会获取所有这些值,甚至会更正它们,以防我自己的插入与文件元数据不同。
不确定为什么要手动添加曲目,因为 android 扫描会负责填充所有必要的字段。下面是 table 文件(部分)的屏幕截图