製做音樂播放器java
實現的功能:android
歌曲的播放、暫停、中止、上一首、下一首、歌單列表的顯示(獲取本地歌曲)。git
成品圖:佈局
功能代碼實現:post
實現歌曲的播放、暫停、中止、上一首、下一首:this
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; } }
歌單列表的實現(涉及兩個文件):.net
//在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.gitxml