Android 10/Q,MediaStore 和 MediaPlayer.playFromUri
Android 10/Q, the MediaStore and MediaPlayer.playFromUri
Android 10 中与 MediaStore 相关的更改现在似乎需要为 >=10 和 <=9 版本使用不同的代码。做了一年其他事情后,我回来更新应用程序并遇到困难。我的特殊问题是我下载了一个音乐文件(所有类型),将其连同专辑封面一起存储到内部共享存储目录 (Android/media/com.myapp/mydir)。然后我使用 ContentResolver 将它添加到 MediaStore 并取回 Uri。然后我会使用 MediaPlayer.playFromUri() 播放它。
这在 Android <=9 上仍然可以正常工作,但在 10 MediaPlayer.playFromUri() 上会抛出 IO 异常。文件在那里,Uri 在添加到 MediaStore 时返回。我在这里阅读了一些试图拼凑解决方案的帖子,但还是不太明白。
添加到 MediaStore 的提炼代码是...
ContentResolver cr = getContext().getContentResolver();
ContentValues vtrack = new ContentValues();
vtrack.put(MediaStore.MediaColumns.TITLE, t.getTitle());
vtrack.put(MediaStore.MediaColumns.DATA, audiopath);
vtrack.put(MediaStore.Audio.AudioColumns.ARTIST, t.getArtist());
vtrack.put(MediaStore.Audio.AudioColumns.ALBUM, t.getAlbum());
vtrack.put(MediaStore.Audio.AudioColumns.IS_MUSIC, 1);
Uri u;
try {
u = cr.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, vtrack);
}
catch (Exception e) {
e.getMessage();
}
非常感谢任何帮助。
Relative_path: DCIM/MyFolder
或 Pictures/MyFiles
.
数据到 full path of file
。 –
Android 10 中与 MediaStore 相关的更改现在似乎需要为 >=10 和 <=9 版本使用不同的代码。做了一年其他事情后,我回来更新应用程序并遇到困难。我的特殊问题是我下载了一个音乐文件(所有类型),将其连同专辑封面一起存储到内部共享存储目录 (Android/media/com.myapp/mydir)。然后我使用 ContentResolver 将它添加到 MediaStore 并取回 Uri。然后我会使用 MediaPlayer.playFromUri() 播放它。
这在 Android <=9 上仍然可以正常工作,但在 10 MediaPlayer.playFromUri() 上会抛出 IO 异常。文件在那里,Uri 在添加到 MediaStore 时返回。我在这里阅读了一些试图拼凑解决方案的帖子,但还是不太明白。
添加到 MediaStore 的提炼代码是...
ContentResolver cr = getContext().getContentResolver();
ContentValues vtrack = new ContentValues();
vtrack.put(MediaStore.MediaColumns.TITLE, t.getTitle());
vtrack.put(MediaStore.MediaColumns.DATA, audiopath);
vtrack.put(MediaStore.Audio.AudioColumns.ARTIST, t.getArtist());
vtrack.put(MediaStore.Audio.AudioColumns.ALBUM, t.getAlbum());
vtrack.put(MediaStore.Audio.AudioColumns.IS_MUSIC, 1);
Uri u;
try {
u = cr.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, vtrack);
}
catch (Exception e) {
e.getMessage();
}
非常感谢任何帮助。
Relative_path: DCIM/MyFolder
或 Pictures/MyFiles
.
数据到 full path of file
。 –