清单文件添加权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
public class MusicUtil {
public static List<MusicBean> getMusics(Context context) {
List<MusicBean> beans = new ArrayList<>();
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query
(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null, null);
while (cursor.moveToNext()) {
MusicBean bean = new MusicBean();
bean.setTitle(cursor.getString(cursor.getColumnIndex(MediaStore.
Audio.Media.TITLE)));
bean.setArtist(cursor.getString(cursor.getColumnIndex(MediaStore.
Audio.Media.ARTIST)));
bean.setPath(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)));
beans.add(bean);
}
cursor.close();
return beans;
}
}
public class MusicBean {
private String title;
private String artist;
private String path;
public String getTitle() {
return title;
}
public void setTitle(String pTitle) {
title = pTitle;
}
public String getArtist() {
return artist;
}
public void setArtist(String pArtist) {
artist = pArtist;
}
public String getPath() {
return path;
}
public void setPath(String pPath) {
path = pPath;
}
}
listview = (ListView) findViewById(R.id.listview);
MyAdapter adapter = new MyAdapter();
final List<MusicBean> musics = MusicUtil.getMusics(this);
adapter.setBeans(musics);
listview.setAdapter(adapter);
final MediaPlayer mediaPlayer = new MediaPlayer();
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> pAdapterView, View pView, int pI, long pL) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(musics.get(pI).getPath());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException pE) {
pE.printStackTrace();
}
}
});
public class MyAdapter extends BaseAdapter{
public List<MusicBean> mBeans = new ArrayList<>();
public void setBeans(List<MusicBean> pBeans) {
mBeans = pBeans;
}
@Override
public int getCount() {
return mBeans.size();
}
@Override
public Object getItem(int pI) {
return mBeans.get(pI);
}
@Override
public long getItemId(int pI) {
return pI;
}
@SuppressLint("ViewHolder")
@Override
public View getView(int pI, View pView, ViewGroup pViewGroup) {
View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, pViewGroup, false);
TextView songsName = inflate.findViewById(R.id.songsName);
TextView name = inflate.findViewById(R.id.name);
songsName.setText(mBeans.get(pI).getTitle());
name.setText(mBeans.get(pI).getArtist());
return inflate;
}
}