我正在尝试在手机上获取 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 文件。没关系。现在我想得到他们的封面图片。
如果我像这样使用 MediaMetadataRetriver 的 getEmbeddedPicture 方法
mediaMetadataRetriever.setDataSource(localeMusic.getPath()); localeMusic.setImage(mediaMetadataRetriever.getEmbeddedPicture());
将近 40-50 个文件大约需要 6-7 秒。因为 getEmbeddedPicture() 太慢了!
还尝试获取album_id 并将另一个光标查询到MediaStore.Audio.Albums,我看到所有专辑ID 都是相同的,因为它们都是同一个文件夹。我不想显示他们的专辑图片。我想显示文件的封面图片。我在这里尝试过但是在那里,我们正在获取文件的专辑图像。那不是我问的。
在哪里可以找到文件的图像路径?MetadataRetriever 类在哪里可以使用 getEmbeddedPicture 获取它?嵌入的图片在哪里?
谢谢。此致