是否可以从文件路径或文件输入流中检索mp3文件的位图(专辑封面),例如使用BitmapFactory API或其他API。
是否可以从文件路径或文件输入流中检索mp3文件的位图(专辑封面),例如使用BitmapFactory API或其他API。
是的,获取mp3封面艺术是可能的。
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(mPath);
InputStream inputStream = null;
if (mmr.getEmbeddedPicture() != null) {
inputStream = new ByteArrayInputStream(mmr.getEmbeddedPicture());
}
mmr.release();
bitmap = BitmapFactory.decodeStream(inputStream);
public Uri getArtUriFromMusicFile(File file) {
final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
final String[] cursor_cols = { MediaStore.Audio.Media.ALBUM_ID };
final String where = MediaStore.Audio.Media.IS_MUSIC + "=1 AND " + MediaStore.Audio.Media.DATA + " = '"
+ file.getAbsolutePath() + "'";
final Cursor cursor = context.getContentResolver().query(uri, cursor_cols, where, null, null);
Log.d(TAG, "Cursor count:" + cursor.getCount());
/*
* If the cusor count is greater than 0 then parse the data and get the art id.
*/
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
Long albumId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri albumArtUri = ContentUris.withAppendedId(sArtworkUri, albumId);
cursor.close();
return albumArtUri;
}
return Uri.EMPTY;
}
android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling: SELECT album_id FROM audio WHERE (is_music=1 AND _data = '/storage/emulated/0/Music/Marked/2013 Gordon & Doyle vs Scooter- Let's Go Biz (Tr-Meet & Yuliana Mash-up).mp3')
- user924'
符号,你知道怎么修复吗? - user924path = path.replaceAll("'", "''");
可以帮助将路径中的单引号替换为两个单引号。 - user924目前在Android中没有直接提供API来从mp3文件中提取专辑封面。您需要通过FFmpeg来提取它。