问题描述
下面有一个功能,我从这里的帖子中获得了该功能,我正尝试从设备中读取音乐文件。
public List<AudioModel> getAllAudioFromDevice(final Context context) {
final List<AudioModel> tempAudioList = new ArrayList<>();
Cursor c = getAllTracks(this);
if (c != null) {
Log.d("Count :",String.valueOf(c.getCount()));
while (c.movetoNext()) {
AudioModel audioModel = new AudioModel();
String path = c.getString(0);
String name = c.getString(1);
String album = c.getString(4);
audioModel.setaAlbum(album);
audioModel.setaArtist(artist);
Log.e("Name :" + name," Album :" + album);
Log.e("Path :" + path," Artist :" + artist);
tempAudioList.add(audioModel);
}
c.close();
} else {
Log.d("Name :","No Music");
}
return tempAudioList;
}
public Cursor getAllTracks(Context context) {
// gets all tracks
if (context != null) {
ContentResolver cr = context.getContentResolver();
final String[] columns = {track_id,track_no,artist,track_name,album,duration,path,year,composer};
return cr.query(uri,columns,null,null);
} else {
return null;
}
}
当我运行该应用程序时,它没有列出任何MP3文件,但会拾取oog文件。我上传到模拟器的mp3文件如下所示:
我也尝试过EXTERNAL_CONTENT_URI,但是不会显示它们。
这是Theo建议的“播放列表管理器”应用中的
抱歉,我是Android Studio的新手,可能缺少一些非常明显的东西。有人可以帮忙吗?
解决方法
您的问题是
Uri uri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
将此更改为
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
,并从中删除.DATA位 游标c = context.getContentResolver()。query(uri,projection,MediaStore.Audio.Media.DATA,null,null) 当您在此处输入标准时。查找查询的语法。将其设置为null即可使用
,这是我的方法,请注意
的语法return cr.query(uri,columns,null,null)
您有
Cursor c = context.getContentResolver().query(uri,projection,MediaStore.Audio.Media.DATA,null);
private final String track_id = MediaStore.Audio.Media._ID;
private final String track_no = MediaStore.Audio.Media.TRACK;
private final String track_name = MediaStore.Audio.Media.TITLE;
private final String artist = MediaStore.Audio.Media.ARTIST;
private final String artist_id = MediaStore.Audio.Media.ARTIST_ID;
private final String duration = MediaStore.Audio.Media.DURATION;
private final String album = MediaStore.Audio.Media.ALBUM;
private final String composer = MediaStore.Audio.Media.COMPOSER;
private final String year = MediaStore.Audio.Media.YEAR;
private final String path = MediaStore.Audio.Media.DATA;
private final String date_added = MediaStore.Audio.Media.DATE_ADDED;
private final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
public Cursor getAllTracks(Context context) {
// gets all tracks
if (context != null) {
ContentResolver cr = context.getContentResolver();
final String[] columns = {track_id,track_no,artist,track_name,album,duration,path,year,composer};
return cr.query(uri,null);
} else {
return null;
}
}