我正在编写一个可以播放MediaStore.Audio.Media.EXTERNAL_CONTENT_URI中存在的所有音频文件的应用程序。 这是我到目前为止的内容:
String[] projection = {MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DATA};
Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
null);
while (cursor.moveToNext()) {
String uri = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
// Use uri to play music...
}
这很好用。通过将uri传递给MediaPlayer,我可以播放音频。 但是...
有没有办法在不依赖MediaStore.Audio.Media.DATA的情况下在外部存储中播放音频项目?
答案 0 :(得分:0)
是的。
您可以简单地用ContentUris.withAppendedId
播放它,因为MediaPlayer
具有method可以播放Uri
的内容。
例如,在这里,我正在设置歌曲Uri。
/// Helper function
public static Uri getSongUri(int songId) {
return ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, songId);
}
/// And then...
public void setUri(Context appContext, int songId) {
// ....
player.setDataSource(appContext, getSongUri(songId));
// ....
}