如何在android中为音乐播放器创建缩略图播放列表?
我在android上开发了一个简单的媒体播放器应用程序。它有一个列表视图来加载SD卡中的所有歌曲,搜索栏和播放按钮。我需要为我的应用程序创建一个相册艺术库(如谷歌音乐播放应用程序)。我用这个代码从SD卡上获取所有歌曲如何在android中为音乐播放器创建缩略图播放列表?,android,imageview,thumbnails,grid-layout,audio-player,android-music-player,Android,Imageview,Thumbnails,Grid Layout,Audio Player,Android Music Player,我在android上开发了一个简单的媒体播放器应用程序。它有一个列表视图来加载SD卡中的所有歌曲,搜索栏和播放按钮。我需要为我的应用程序创建一个相册艺术库(如谷歌音乐播放应用程序)。我用这个代码从SD卡上获取所有歌曲 public ArrayList<String> GetFiles(String DirectoryPath) { ArrayList<String> MyFiles = new ArrayList<String>();
public ArrayList<String> GetFiles(String DirectoryPath) {
ArrayList<String> MyFiles = new ArrayList<String>();
File f = new File(DirectoryPath);
f.mkdirs();
File[] files = f.listFiles();
if (files.length == 0) {
return null;
}else {
for (int i=0; i<files.length; i++)
MyFiles.add(files[i].getName());
}
return MyFiles;
}
您需要使用内容解析器
您需要使用内容解析器
非常感谢。如果你想看到所有的项目,我会试试看:你可能使用的部分:它使用dagger 2,但是你应该能够根据你的需要更新它谢谢。我会试着相信你。如果你想看到所有的项目,我会试试看:你可能使用的部分:它使用dagger 2,但是你应该能够根据你的需要更新它谢谢。我试试看
_________
| |
| image |
| |
|_________|
| title |
|_________|
Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
// Perform a query on the content resolver. The URI we're passing specifies that we
// want to query for all audio media on external storage (e.g. SD card)
Cursor cur = contentResolver.query(uri, null,
MediaStore.Audio.Media.IS_MUSIC + " = 1", null, null);
if (cur == null) {
Log.e(TAG, "Failed to retrieve music: cursor is null :-(");
subscriber.onError(new Throwable("Failed to retrieve music: cursor is null :-("));
return;
}
if (!cur.moveToFirst()) {
subscriber.onError(new Throwable("No results. :( Add some tracks!"));
Log.e(TAG, "Failed to move cursor to first row (no query results).");
return;
}
int artistColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int titleColumn = cur.getColumnIndex(MediaStore.Audio.Media.TITLE);
int albumColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
int durationColumn = cur.getColumnIndex(MediaStore.Audio.Media.DURATION);
int idColumn = cur.getColumnIndex(MediaStore.Audio.Media._ID);
int dataColumn = cur.getColumnIndex(MediaStore.Audio.Media.DATA);
ArrayList<LocalTrack> tracks = new ArrayList<>();
do {
Log.i(TAG, "ID: " + cur.getString(idColumn) + " Title: " + cur.getString(titleColumn));
tracks.add(new LocalTrack(
cur.getLong(idColumn),
cur.getString(artistColumn),
cur.getString(titleColumn),
cur.getLong(albumColumn),
cur.getLong(durationColumn),
cur.getString(dataColumn)));
} while (cur.moveToNext());
Log.i(TAG, "Done querying media. MusicRetriever is ready.");
cur.close();
for (LocalTrack localTrack : tracks) {
localTrack.setArtPath(findAlbumArt(localTrack));
}
subscriber.onNext(tracks);
public String findAlbumArt(LocalTrack localTrack) {
Cursor cursor = contentResolver.query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART},
MediaStore.Audio.Albums._ID + "=?",
new String[]{String.valueOf(localTrack.getAlbum())},
null);
String path = null;
if (cursor != null) {
if (cursor.moveToFirst()) {
path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
// do whatever you need to do
cursor.close();
}
}
return path;
}