安卓实现读取手机内存中的所有音乐

安卓实现读取手机内存中的所有音乐

黑客专题访客2021-10-12 9:33:009473A+A-

  读取手机内存中的音乐信息需要做如下几步:

  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;

  }

  到这里就基本实现了读取歌曲信息的功能了,只要在主界面设置适配器就可以了。

 

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 3条评论
  • 北槐蔚落2022-05-28 10:45:51
  • lic View getView(int position, View view, ViewGroup arg2) {  if (view==null) {  view=LayoutInflater.from(context).inflate(R.layout.music_format,null)
  • 鸠骨夙世2022-05-28 05:08:54
  • ayList;  }  @Override  public int getCount() {  return arrayList.size();  }  @Override  public Ob
  • 颜于铃予2022-05-28 01:00:58
  • ayList;  }  我是用普通方法做的,也可以使用静态实现。  二、适配器模块  private ArrayList<Object> arrayList;  private Context context;  private Tex

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理