обложка на андроид - PullRequest
       10

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

25 голосов
/ 23 декабря 2009

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

Ответы [ 7 ]

45 голосов
/ 07 января 2010
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 здесь https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java метод getArtworkQuick.

9 голосов
/ 17 января 2016

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

Объявите этот путь в константах приложения -

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 будет обрабатывать кэширование, масштабирование и ленивую загрузку изображений для вас.

Надеюсь, это кому-нибудь поможет.

6 голосов
/ 02 декабря 2015

Вы можете использовать

MediaMetadataRetriever

класс и получить информацию о треке, т. Е. Название, исполнитель, альбом, изображение

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;
}
3 голосов
/ 20 февраля 2015

Здесь я могу прикрепить одну функцию, которая возвращает обложку альбома из медиа магазина.

Здесь, в функции, мы просто должны передать идентификатор_альбома, который мы получаем из Медиа-магазина.

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;
}
2 голосов
/ 03 января 2010

Судя по вашим комментариям к другим, ваш вопрос не столько об Android, сколько о том, как создавать обложки альбомов в целом. Возможно эта статья по извлечению обложек альбомов из Amazon будет полезна. Когда у вас будет локальная копия, и вы сохраните ее, как предложил Ник, я думаю, вы сможете извлечь ее так, как предложил Фаджи.

0 голосов
/ 23 декабря 2009

Не знаю, читали ли вы, что Google делает Stackoverflow официальной средой для Android-приложений для разработки вопросов и ответов , но для начинающих ... Теперь я ничего не знаю о разработке в andriod, но о быстром поиске на сайте разработчиков Android, я нашел это:

MediaStore.Audio.AlbumColumns

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

0 голосов
/ 23 декабря 2009

Android распознает только файлы с именем «AlbumArt.jpg» как обложки альбомов. Просто поместите фотографии с таким именем в папку альбома, и все будет в порядке ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...