音乐播放器获取音乐列表

194 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

首先清单文件添加权限(注意一定要记得添加权限,不然没办法读取设备上的内容,运行的时候如果没有读取到设备上的东西记得看看权限是不是被禁止了,可以手动打开权限,也可以代码控制打开权限)

清单文件添加权限:<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;
    }
}

//使用,在activity里面写一个列表

        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;
        }
    }

item.xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/songsName"
        android:text="歌名"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp"
        />
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:text="歌手名"
        android:layout_marginLeft="20dp"
        android:layout_gravity="center_vertical"
        />
</LinearLayout>

以上代码就完成了音乐播放器内容,如有错误请指出