android - star - mp3tag
arte de portada en android (7)
Android solo reconoce los archivos llamados "AlbumArt.jpg" como Cubiertas de Álbum. Simplemente coloca las fotos con ese nombre en la carpeta del álbum y estarás bien.
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 de medios de Android predeterminado muestra las carátulas de los álbumes al publicar álbumes, ¿cómo puedo obtener estas ilustraciones?
No sé si leyó que google está haciendo de el medio oficial de preguntas y respuestas sobre el desarrollo de aplicaciones de Android, pero para las preguntas de los principiantes ... Ahora, no sé nada sobre el desarrollo en andriod, pero una búsqueda rápida en el sitio de desarrolladores de Android, encontré esto :
Esperemos que te ayude.
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;
}
Según tus comentarios a otros, parece que tu pregunta es menos sobre Android y más sobre cómo obtener carátulas de álbumes en general. Quizás 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 que sugirió Fudgey.
Aquí puedo adjuntar una función que es devolver la carátula del álbum de la tienda de medios.
Aquí en función solo tenemos que pasar el album_id que obtenemos de la tienda de medios.
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;
}
No sé por qué todo el mundo lo hace tan complicado que puede usar Glide para lograr esto de la manera más simple y eficiente con solo 1 línea de código
Declara este camino en Constantes de Aplicaciones -
final public static Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Obtén 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é, la escala y la carga perezosa de imágenes para ti.
Espero que ayude a alguien.
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);
Puede encontrar un código de muestra 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.