2012-04-30 2 views
0

のパスを使用して、私はちょうど、すなわち「/mnt/sdcard/chan_mp3/Title.mp3を」パスを使用して、音楽のタイトルのカバーを表示したいです。表示アルバムカバーはちょうど私が音楽アプリを持っているmp3ファイル

今はMediaStoreを使用することはできません。

ソングのinit:

//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(); 
       } 
関連する問題