如何在android中显示歌曲的缩略图?

如何在android中显示歌曲的缩略图?,android,android-mediaplayer,Android,Android Mediaplayer,我正在显示SD卡上的所有歌曲,包括标题、艺术家、专辑等信息 但是我对歌曲缩略图像有问题。如何获得歌曲缩略图 下面是我的代码 public class AndroidListMediaActivity extends ListActivity { SimpleCursorAdapter adapter; MediaPlayer myMediaPlayer; /** Called when the activity is first created. */ @Override p

我正在显示SD卡上的所有歌曲,包括标题、艺术家、专辑等信息

但是我对歌曲缩略图像有问题。如何获得歌曲缩略图

下面是我的代码

public class AndroidListMediaActivity extends ListActivity {

 SimpleCursorAdapter adapter;
 MediaPlayer myMediaPlayer;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      String[] from = {
        MediaStore.MediaColumns.TITLE};
      int[] to = {
        android.R.id.text1};

      Cursor cursor = managedQuery(
        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
        null,
        null,
        null,
        MediaStore.Audio.Media.TITLE);

      adapter = new SimpleCursorAdapter(this,
        android.R.layout.simple_list_item_1, cursor, from, to);
      setListAdapter(adapter);
  }

 @Override
 protected void onListItemClick(ListView l, View v, int position, long id) {
  Cursor cursor = adapter.getCursor();
  cursor.moveToPosition(position);

  String _id = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
  String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
  String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
  String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
  int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));

  Uri playableUri
   = Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, _id);
  myMediaPlayer = MediaPlayer.create(getBaseContext(), playableUri);
  String msgMediaPlayer;
  if(myMediaPlayer != null){
   myMediaPlayer.start();
   msgMediaPlayer = "Playing: " + playableUri + "\n";
  }else{
   msgMediaPlayer = "Cannot play: " + playableUri + "\n";
  }

  String info = msgMediaPlayer + "\n"
     + "_ID: " + _id + "\n"
     + "TITLE: " + title + "\n"
     + "ARTIST: " + artist + "\n"
     + "ALBUM: " + album + "\n"
     + "DURATION: " + duration/1000 + "s";

  Toast.makeText(this, info, Toast.LENGTH_LONG).show();
 }

}

使用下面的例子它的工作为我

public class Main extends ListActivity
{

String[] videoFileList = {
        "/sdcard/Video/1.mp4",
        "/sdcard/Video/2.mp4",
        "/sdcard/Video/3.mp4",
        "/sdcard/Video/5.mp4"
};

public class MyThumbnaildapter extends ArrayAdapter<String>
{

    public MyThumbnaildapter(Context context, int textViewResourceId,String[] objects) 
    {
        super(context, textViewResourceId, objects);
        // TODO Auto-generated constructor stub
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        // TODO Auto-generated method stub

        View row = convertView;
        if(row==null)
        {
            LayoutInflater inflater=getLayoutInflater();
            row=inflater.inflate(R.layout.second_list_item, parent, false);
        }

        TextView textfilePath = (TextView)row.findViewById(R.id.FilePath);
        textfilePath.setText(videoFileList[position]);
        ImageView imageThumbnail = (ImageView)row.findViewById(R.id.Thumbnail);

        Bitmap bmThumbnail;
        if(new File(videoFileList[position]).exists())
        {
            bmThumbnail = ThumbnailUtils.createVideoThumbnail(videoFileList[position], MediaStore.Images.Thumbnails.MINI_KIND);
            bmThumbnail=Bitmap.createScaledBitmap(bmThumbnail,150,150, true);
            imageThumbnail.setImageBitmap(bmThumbnail);
            textfilePath.setText(videoFileList[position]);
        }

        return row;
    }

}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setListAdapter(new MyThumbnaildapter(Main.this, R.layout.second_list_item, videoFileList));
}
public类主扩展ListActivity
{
字符串[]视频文件列表={
“/sdcard/Video/1.mp4”,
“/sdcard/Video/2.mp4”,
“/sdcard/Video/3.mp4”,
“/sdcard/Video/5.mp4”
};
公共类MyThumbnaildapter扩展了ArrayAdapter
{
公共MyThumbnaildapter(上下文上下文,int textViewResourceId,字符串[]对象)
{
超级(上下文、textViewResourceId、对象);
//TODO自动生成的构造函数存根
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
//TODO自动生成的方法存根
视图行=转换视图;
if(行==null)
{
LayoutInflater充气机=getLayoutInflater();
行=充气机。充气(R.layout.second\u list\u项,父项,false);
}
TextView textfilePath=(TextView)row.findViewById(R.id.FilePath);
textfilePath.setText(videoFileList[position]);
ImageView imageThumbnail=(ImageView)row.findViewById(R.id.thumnail);
位图缩略图;
如果(新文件(videoFileList[position])存在()
{
bmthumboil=ThumbnailUtils.createvideothumboil(videoFileList[position],MediaStore.Images.Thumbnails.MINI_-KIND);
bmThumbnail=Bitmap.createScaledBitmap(bmThumbnail,150150,true);
设置图像位图(BM缩略图);
textfilePath.setText(videoFileList[position]);
}
返回行;
}
}
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setListAdapter(新的MythumbNaildAdapter(Main.this,R.layout.second_list_项,videoFileList));
}

}

试试这篇文章中发布的一个类似场景:可能是OP的重复,它要求从MediaStore显示歌曲缩略图,而不是视频缩略图!