【发布时间】:2022-01-06 16:04:32
【问题描述】:
我正在尝试做一个媒体播放器,第一步是扫描设备外部存储中所有可用的歌曲。之后我会将它们存储在一个列表中,但我被困在了第一点。 (我对 Uri 或 Cursor 不熟悉,所以即使在研究了一段时间 google 和 Stackoverflow 之后,我也不知道它们是如何工作的,也许这就是问题所在)
我希望能够将光标获得的每首歌曲存储在一个歌曲类的列表中,该列表将包含艺术家、专辑、标题、持续时间和路径。以后想用路径复现mediaPlayer.setDataSource(path);的歌曲但是不知道怎么弄。
protected void getSongs() {
ContentResolver contentResolver = this.getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor cursor = contentResolver.query(uri,null,MediaStore.Audio.Media.IS_MUSIC + " = 1",null,null);
if (cursor!=null&&cursor.moveToFirst()){
//retrieve index of columns
int artistColumn=cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int albumColumn=cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int titleColumn=cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int durationColumn=cursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
//get path somehow
}
else {
Toast.makeText(this, "Query failed", Toast.LENGTH_SHORT).show();
}
方法未完成。我知道我遗漏了一些东西,但我找不到的唯一疑问是当前光标元素的路径。
提前致谢。
【问题讨论】:
标签: java android uri mediastore android-cursor