Я разрабатываю своего рода медиаплеер для Android. Вопрос в том, как я могу получить обложку аудиофайла на Android. Например, медиа-плеер по умолчанию для Android показывает обложки альбомов при записи альбомов, как я могу получить это произведение искусства.
Обложка на андроиде
Ответ 1
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
ContentResolver res = context.getContentResolver();
InputStream in = res.openInputStream(uri);
Bitmap artwork = BitmapFactory.decodeStream(in);
Более полный образец кода можно найти в исходном коде Android Music здесь https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java метод getArtworkQuick.
Ответ 2
Я не знаю, почему все делают это настолько сложным, что вы можете использовать Glide, чтобы добиться этого самым простым и эффективным способом с помощью только одной строки кода
Объявите этот путь в App Constants -
final public static Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Получить изображение Uri с использованием идентификатора альбома
Uri uri = ContentUris.withAppendedId(PlayerConstants.sArtworkUri,
listOfAlbums.get(position).getAlbumID());
Теперь просто покажите обложку альбома с помощью uri: -
Glide.with(context).load(uri).placeholder(R.drawable.art_default).error(R.drawable.art_default)
.crossFade().centerCrop().into(holder.albumImage);
Glide будет обрабатывать кеширование, масштабирование и ленивую загрузку изображений для вас.
Надеюсь, что это поможет кому-то.
Ответ 3
Вы можете использовать
MediaMetadataRetriever
и получить информацию о треке i.e. Title, Artist, Album, Image
Bitmap GetImage(String filepath) //filepath is path of music file
{
Bitmap image;
MediaMetadataRetriever mData=new MediaMetadataRetriever();
mData.setDataSource(filePath);
try{
byte art[]=mData.getEmbeddedPicture();
image=BitmapFactory.decodeByteArray(art, 0, art.length);
}
catch(Exception e)
{
image=null;
}
return image;
}
Ответ 4
Основываясь на ваших комментариях к другим, кажется, что ваш вопрос меньше о Android и о том, как получить обложку альбома в целом. Возможно, эта статья об извлечении обложек альбомов из Amazon будет полезна. Когда у вас есть локальная копия и сохраните ее, как предложил Ник, я считаю, что вы должны получить ее так, как предложил Фуджи.
Ответ 5
Здесь я могу прикрепить одну функцию, которая возвращает обложку альбома из магазина мультимедиа.
Здесь в функции нам просто нужно передать album_id, который мы получаем из магазина Media.
public Bitmap getAlbumart(Long album_id)
{
Bitmap bm = null;
try
{
final Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
ParcelFileDescriptor pfd = context.getContentResolver()
.openFileDescriptor(uri, "r");
if (pfd != null)
{
FileDescriptor fd = pfd.getFileDescriptor();
bm = BitmapFactory.decodeFileDescriptor(fd);
}
} catch (Exception e) {
}
return bm;
}
Ответ 6
Android только распознает файлы с именем "AlbumArt.jpg" в качестве обложек альбомов. Просто поместите фотографии с этим именем в папку альбома, и все будет в порядке..
Ответ 7
Я не знаю, читаете ли вы, что Google делает Stackoverflow официальной разработкой приложений для Android Q & Средство, но для начинающих вопросов... Теперь я ничего не знаю о разработке в andriod, но быстрый поиск на сайте разработчиков Android, я нашел это:
Надеюсь, это поможет.