android – 显示SD卡上的所有音乐

我正在使用此页面代码

http://z4android.blogspot.com/2011/06/displaying-list-of-music-files-stored.html

代码正在运行,但并不太好.
当我尝试向下滚动时,ListView会不断重复列表中的歌曲.

我一直在寻找一些替代代码,但我没有找到任何代码.

谢谢你的帮助.

解决方法

我不完全确定是什么原因导致你提到的问题,但试试这个代码.
private MediaPlayer mMediaPlayer;
private String[] mMusicList;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  mMediaPlayer = new MediaPlayer();

  ListView mListView = (ListView) findViewById(R.id.listView1);

  mMusicList = getMusic();

  ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mMusicList);
  mListView.setAdapter(mAdapter);

  mListView.setonItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) {
      try {
        playSong(mMusicList[arg2]);
      } catch (IllegalArgumentException e) {
        e.printstacktrace();
      } catch (IllegalStateException e) {
        e.printstacktrace();
      } catch (IOException e) {
        e.printstacktrace();
      }
    }
  });
}

private String[] getMusic() {
  final Cursor mCursor = managedQuery(
  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,new String[] { MediaStore.Audio.Media.disPLAY_NAME },null,"LOWER(" + MediaStore.Audio.Media.TITLE + ") ASC");

  int count = mCursor.getCount();

  String[] songs = new String[count];
  int i = 0;
  if (mCursor.movetoFirst()) {
    do {
      songs[i] = mCursor.getString(0);
      i++;
    } while (mCursor.movetoNext());
  }

  mCursor.close();

  return songs;
}

private void playSong(String path) throws IllegalArgumentException,IllegalStateException,IOException {
  String extStorageDirectory = Environment.getExternalStorageDirectory()
  .toString();

  path = extStorageDirectory + File.separator + path;

  mMediaPlayer.reset();
  mMediaPlayer.setDataSource(path);
  mMediaPlayer.prepare();
  mMediaPlayer.start();
}

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...