【发布时间】:2019-03-18 15:57:41
【问题描述】:
我正在尝试在手机上获取 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() 太慢了!
还尝试获取专辑 ID 并查询另一个光标到 MediaStore.Audio.Albums,我看到所有专辑 ID 都是相同的,因为它们都是同一个文件夹。我不想显示他们的专辑图片。我想显示文件的封面图片。 我像here 一样尝试过,但是在那里,我们正在获取文件的专辑图像。那不是我问的。
在哪里可以找到文件的图像路径? MetadataRetriever 类在哪里可以使用 getEmbeddedPicture 获取它?嵌入的图片在哪里?
谢谢。最好的问候
【问题讨论】:
-
我的问题是什么问题,为什么要减分?
标签: android performance file android-contentresolver mediametadataretriever