2012-04-30 55 views
0

我有一个音乐应用程序,我只想使用路径即“/mnt/sdcard/chan_mp3/Title.mp3”显示音乐标题的封面。仅使用mp3文件的路径显示专辑封面

我现在无法使用MediaStore来做到这一点。

宋初始化:

//path = "/mnt/sdcard/chan_mp3/Title.mp3" 
metaDataRetriver = new MediaMetadataRetriever(); 
metaDataRetriver.setDataSource(path); 
artwork = metaDataRetriver.getEmbeddedPicture(); 

ListActivity:

byte[] artwork = values.get(position).getArtwork(); // returns Song.artwork 
Bitmap bMap = BitmapFactory.decodeByteArray(artwork, 0, artwork.length); 
imageView.setImageBitmap(bMap); 

这是到目前为止我的代码,但它并没有在所有现在工作...

+0

什么不行?你有什么问题? – Simon

+1

“我现在无法使用MediaStore来执行此操作。”为什么不?大多数mp3不包含嵌入的艺术作品,您需要扫描文件夹中的图像文件才能获得作品。 – zapl

+0

“大多数mp3不包含嵌入的艺术作品”多数民众赞成没关系,我的意思是其他解决方案不会工作,然后也。 那么没有其他的可能吗?为什么有一个metaDataRetriever不起作用时,如参考文献中所述? –

回答

0

我找到了另一种方式,当保存每首歌曲的ALBUM_ID时:

  Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart"); 
      Uri uri = ContentUris.withAppendedId(sArtworkUri, Integer.valueOf(albumId)); 
      ContentResolver res = context.getContentResolver(); 
      InputStream in; 
      try { 
       in = res.openInputStream(uri); 
       artwork = BitmapFactory.decodeStream(in); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 
相关问题