Я пытаюсь получить образ mp3-файла на свой телефон. Я боролся несколько дней, и теперь я знаю;
Во-первых, я использую поставщика контента с этим кодом
` Uri allSongsUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; String[] projection = { MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ALBUM_ID, MediaStore.Audio.Media.ALBUM_KEY, MediaStore.Audio.Media.DATE_MODIFIED }; String sortOrder = MediaStore.Video.Media.DATE_MODIFIED + " DESC";
И я создаю свой курсор так:
Cursor cursor = ctx.getContentResolver().query(allSongsUri, projection, null, null, sortOrder);
Там у меня есть все мои mp3 файлы. Все нормально. Теперь я хочу получить их обложку.
Если я использую метод getEmbeddedPicture MediaMetadataRetriver, подобный этому
mediaMetadataRetriever.setDataSource(localeMusic.getPath()); localeMusic.setImage(mediaMetadataRetriever.getEmbeddedPicture());
это заняло около 6-7 секунд с файлом почти 40-50. Потому что getEmbeddedPicture() слишком медленный!.
Также попытался получить album_id и запросить другой курсор в MediaStore.Audio.Albums, и я увидел, что все идентификаторы альбомов одинаковы, потому что все они представляют собой одну и ту же папку. Я не хочу показывать изображение их альбома. Я хочу показать обложку файла. Я пробовал это как здесь Но там мы получаем изображение альбома файла. Это не я спрашиваю.
Где я могу найти путь к изображению файла? Где класс MetadataRetriever может получить его с помощью getEmbeddedPicture? Где эта встроенная картинка?
Спасибо. С наилучшими пожеланиями