Android第三次做業

製做音樂播放器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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息