读取手机内存中的音乐信息需要做如下几步:
1)创建一个XML文件,存放获取到的信息,使用ListView控件
2)创建一个新的XML文件,对LIstView中的item对象进行布局
3)需要创建一个Music类用于存放需要获取的Music的主要信息
4)需要创建一个帮助类,用于获取手机中的音乐信息,并通过一个集合类传递获取到的信息
5)创建一个自定义适配器,用于加载ListView的每个子Item
6)实现对数据的加载,并返回到用户界面
主要的代码实现如下:
一、帮助类模块
public ArrayList<Object> getMusic(Context context) { arrayList = new ArrayList<Object>(); resolver = context.getContentResolver(); cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); if (cursor != null) { while (cursor.moveToNext()) { musicInfo = new MusicInfo(); musicInfo.setSinger_Name(cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST)));// 歌手名 musicInfo.setSong_Name(cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.TITLE)));// 歌曲名 musicInfo.setSong_size(FormatChange.formatSize(cursor .getInt(cursor .getColumnIndex(MediaStore.Audio.Media.SIZE))));// 歌曲的大小 musicInfo .setSong_time(FormatChange.toTime(cursor.getInt(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))));// 歌曲时间 musicInfo.setUrl(cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.DATA))); arrayList.add(musicInfo); } } cursor.close(); return arrayList; }
我是用普通方法做的,也可以使用静态实现。
二、适配器模块
private ArrayList<Object> arrayList; private Context context; private TextView music_singer,music_name,music_size; private MusicInfo musicInfo; public Music_adapter(Context context,ArrayList<Object> arrayList){ this.context=context; this.arrayList=arrayList; } @Override public int getCount() { return arrayList.size(); } @Override public Object getItem(int position) { return arrayList.get(position); } @Override public long getItemId(int id) { return id; } @Override public View getView(int position, View view, ViewGroup arg2) { if (view==null) { view=LayoutInflater.from(context).inflate(R.layout.music_format,null); } music_name=(TextView) view.findViewById(R.id.music_name); music_singer=(TextView) view.findViewById(R.id.music_singer); music_size=(TextView) view.findViewById(R.id.music_size); musicInfo=(MusicInfo) arrayList.get(position); music_name.setText(musicInfo.getSong_Name()); music_singer.setText(musicInfo.getSinger_Name()+"|"+musicInfo.getSong_time()); music_size.setText(musicInfo.getSong_size()); //这里一定需要转换成字符串类型的 return view; }
到这里就基本实现了读取歌曲信息的功能了,只要在主界面设置适配器就可以了。
时间: 2024-10-10 17:18:08