Android第三次作业
制作音乐播放器
实现的功能:
歌曲的播放、暂停、停止、上一首、下一首、歌单列表的显示(获取本地歌曲)。
成品图:
功能代码实现:
实现歌曲的播放、暂停、停止、上一首、下一首:
public void onClick(View v) {//按钮功能实现 switch (v.getId()){ case R.id.pre: changeMusic(--current);//切哥 break; case R.id.play: if (mediaPlayer==null){//如果没有歌在播放 changeMusic(0);//切歌到第一首 }else {//如果有歌在播放 if (!mediaPlayer.isPlaying())//如果歌曲恰好没有正在播放 { mediaPlayer.start();//继续播放 } else {//如果歌曲恰好正在播放 Toast.makeText(MainActivity.this, "已经在播放", Toast.LENGTH_SHORT).show();//弹出提示信息 } } break; case R.id.next: changeMusic(++current);//切歌 break; case R.id.pause: if(mediaPlayer.isPlaying()){//如果歌曲恰好正在播放 mediaPlayer.pause();//暂停播放 } break; case R.id.stop: if(mediaPlayer.isPlaying()){//如果歌曲恰好正在播放 mediaPlayer.reset();//重置歌曲 try{ mediaPlayer.setDataSource(list.get(0).path);//获取第一首歌的资源 mediaPlayer.prepare();//准备播放 }catch(IOException e){ e.printStackTrace(); } } break; } }
歌单列表的实现(涉及两个文件):
//在MainActivity.java文件中 private void init(){//初始化 listview=(ListView)findViewById(R.id.listview);//为listview添加监听 list=new ArrayList<>();//建立存放歌曲的list列表 Cursor a=c.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.AudioColumns.IS_MUSIC);//获取本地音乐资源 if(a!=null){ while(a.moveToNext()){//读取音乐资源 SongInfomation x=new SongInfomation();//建立空音乐信息类的对象,方便对歌曲信息读取 x.song = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));//获取歌曲 x.singer = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));//获取歌手名 x.path = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//获取路径 x.size = a.getLong(a.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));//获取大小 x.duration=a.getInt(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));//获取持续 if(x.size>1000*800){ if(x.song.contains("-")){//如果歌名中包含字符‘-’ String[] s=x.song.split("-");//按‘-’进行分割 x.song=s[1];//将后半部分作为歌名存储 x.singer=s[0];//将前半部分作为歌手名存储 } list.add(x);//将已经存储信息的歌曲信息对象放入列表 } } a.close(); } //在Adapter1.java文件中 public View getView(final int i, View view, ViewGroup viewGroup) { Display dis = null; if (view == null) { dis = new Display(); view = View.inflate(context, R.layout.song, null);//找到展示歌曲信息的布局文件,也就是我的项目中的“menu.xml”文件 dis.song = (TextView) view.findViewById(R.id.song);//监听、绑定歌单,将信息放到Display的对象中 dis.singer = (TextView) view.findViewById(R.id.singer); dis.duration = (TextView) view.findViewById(R.id.duration); dis.position = (TextView) view.findViewById(R.id.postion); view.setTag(dis);//给view添加信息 } else { dis = (Display) view.getTag();//可以通过getTag方法提取出我用setTag添加的信息,然后返回给Display的对象 } dis.song.setText(list.get(i).song.toString());//将Display对象的一些需要的属性展示在界面或者传给需要的变量 dis.singer.setText(list.get(i).singer.toString()); int duration=list.get(i).duration; dis.position.setText(i+1+"");//歌曲序列数的实现 return view; }
代码地址(内含APK):https://git.coding.net/mmxf/android3.2.0.git