本来没打算写音乐播放器的,可是由于天天动听要停服了,而且又不喜欢酷狗等音乐播放器,因为太占用内存了,而且有些要收费的歌曲还没有帮我们过滤去(个人看法,勿喷)

所以就开始写一个简单的音乐播放器,当然,第一个想到的功能是本地音乐文件,所以就从这方面先下手了。

====================================================================

首先,要了解一下,Android手机的音乐文件都是放在一个数据库的,很多用过以前那些旧播放器的大大们肯定都看到过“媒体库”这个名词,这个媒体库就是一个数据库,存放着我们想要的音乐。所以我们可以在这方面下手,而不是跟别人说的“遍历内存卡”。

步骤比较简单,由于要存放音乐,肯定要构建一个bean来存放你音乐的信息,由于需求暂时比较简单,所以我只制定了三个,分别是音乐路径,音乐显示名,音乐大小

构建的类如下:


public class MusicBean { private String MusicName; private String MusicPath; private String MusicLenght; public String getMusicLenght() { return MusicLenght; } public void setMusicLenght(String musicLenght) { MusicLenght = musicLenght; } public void setMusicName(String musicName) { MusicName = musicName; } public void setMusicPath(String musicPath) { MusicPath = musicPath; } public String getMusicName() { return MusicName; } public String getMusicPath() { return MusicPath; } }

构建好我们的载体后,就要开始要数据了,既然是对数据库操作,那么肯定要用到我们常用到的游标操作,所以我们需要用到cursor,直接上代码


private List getlist() { Cursor cursor; MusicBean musicBean = new MusicBean(); List list = new ArrayList<>(); cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); while (cursor.moveToNext()) { musicBean = new MusicBean(); musicBean.setMusicName(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME))); musicBean.setMusicPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA))); musicBean.setMusicLenght(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))); int i = Integer.parseInt(musicBean.getMusicLenght().toString()); if (i>200000) list.add(musicBean); Toast.makeText(MusicListActivity.this, list.size() + "", Toast.LENGTH_SHORT).show(); } return list;

可以看出,这个方法调用了数据库,而且各个方法的英文都比较简单,就不解释了,注意,这儿返回的都是string类型,所以请不要使用int等去代替,而返回的list就是我们需要的数据的集合了,这时候就可以对这些数据操作,细心的朋友应该可以看到我在操作中,将字节数<20w的音乐文件删除了,这是用为有时候会留下一些琐碎的音乐文件,比如浏览网页时候留下的,或则铃声之类的,获得数据后,可以使用listview来哦包装下我们的音乐,我直接上adapter的内容吧


@Override public View getView(int position, View convertView, ViewGroup parent) { convertView= LayoutInflater.from(context).inflate(R.layout.adapter_musiclist,null); TextView textView= (TextView) convertView.findViewById(R.id.textView); textView.setText(list.get(position).getMusicName()); return convertView; }

比较简单,所以直接使用view就可以了,然后记得加下权限(以前在eclipse 不用,现在在Androidstudio却要,我也搞不懂)

要的权限是读取内存卡的权限,不加的会错误

到最后上下效果图

效果比较简单,请不要笑我,项目已经上传到我的资源里面,只有本地音乐文件这个功能

更多相关文章

  1. android 自定义View之SubmitView
  2. Android(安卓)操作系统 获取Root权限 原理解析
  3. ContentProvider数据模型
  4. Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作
  5. Android(安卓)SQLite使用SQLiteOpenHelper类对数据库进行操作
  6. Android(安卓)Activity与Service数据交互:Binder、bindService(系
  7. Android通过AIDL实现接听电话、挂断电话操作 | 拨打电话
  8. Android(安卓)获取并显示远程图片 Picasso框架的使用(一)
  9. Android线程阻塞处理及优化

随机推荐

  1. Android_build.gradle配置
  2. Android之Bean属性通知类
  3. android 主题元素映射方式
  4. Porting Android
  5. Android任务栏的图标显示
  6. 提示:Not targeting the latest versions
  7. Android(安卓)InputStream与String,Byte
  8. Android(安卓)异常:Immutable bitmap pass
  9. Android(安卓)开启闪光灯做手电筒 源码
  10. Android: 判断网络连接状态及连接类型