Подтвердить что ты не робот

Обложка на андроиде

Я разрабатываю своего рода медиаплеер для Android. Вопрос в том, как я могу получить обложку аудиофайла на Android. Например, медиа-плеер по умолчанию для Android показывает обложки альбомов при записи альбомов, как я могу получить это произведение искусства.

4b9b3361

Ответ 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, я нашел это:

MediaStore.Audio.AlbumColumns

Надеюсь, это поможет.