arte de portada en android

Estoy desarrollando una especie de reproductor multimedia para Android. La pregunta es cómo puedo obtener la portada del archivo de audio en Android. Por ejemplo, el reproductor multimedia predeterminado de Android muestra portadas de álbumes cuando se enumeran álbumes, ¿cómo puedo obtener estas obras de arte?

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); 

Se puede encontrar un código de ejemplo más completo en la fuente del reproductor de música Android aquí https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java method getArtworkQuick.

No sé por qué todo el mundo lo está haciendo tan complicado que puedes usar Glide para lograr esto de la manera más simple y eficiente con solo 1 línea de código

Declare este camino en Constantes de la aplicación –

 final public static Uri sArtworkUri = Uri .parse("content://media/external/audio/albumart"); 

Obtenga Image Uri usando la ID del álbum

 Uri uri = ContentUris.withAppendedId(PlayerConstants.sArtworkUri, listOfAlbums.get(position).getAlbumID()); 

Ahora simplemente muestra la carátula del álbum usando uri: –

  Glide.with(context).load(uri).placeholder(R.drawable.art_default).error(R.drawable.art_default) .crossFade().centerCrop().into(holder.albumImage); 

Glide manejará el almacenamiento en caché, el escalado y la carga lenta de imágenes para usted.

Espero que ayude a alguien.

Puedes usar

MediaMetadataRetriever

clase y obtener información de la pista, es decir, título, artista, álbum, imagen

 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; } 

Aquí puedo adjuntar una función que es la carátula del álbum de devolución desde la tienda multimedia.

Aquí en la función solo tenemos que pasar el album_id que obtenemos de Media Store.

 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; } 

Según tus comentarios a los demás, parece que tu pregunta es menos sobre Android y más acerca de cómo obtener la portada del álbum en general. Tal vez este artículo sobre la recuperación de carátulas de Amazon sea útil. Una vez que tenga una copia local y la almacene como Nick sugirió, creo que debería poder recuperarla de la manera sugerida por Fudgey.

Android solo reconoce archivos llamados “AlbumArt.jpg” como Cubiertas de álbum. Solo coloca las imágenes con ese nombre en la carpeta del álbum y estarás bien …

No sé si lees que Google está haciendo de Stackoverflow el medio oficial de Q & A para el desarrollo de aplicaciones de Android, pero para las preguntas para principiantes … Ahora, no sé nada sobre el desarrollo en andriod, pero una búsqueda rápida en el sitio de Android Developers, encontré esto :

MediaStore.Audio.AlbumColumns

Espero que ayude.