1600820123

1、实现的功能

  • 实现播放,暂停,播放上一首,下一首功能
  • 显示播放列表
  • 可以播放3首歌曲

2、实现步骤

1、截图:

 

2、主要功能代码

(1)播放,下一首,上一首,退出

public void onClick(View view) {
        switch (view.getId()) {
            case R.id.BtnPlayorPause:  //播放
                musicService.playOrPause();
                break;
            case R.id.BtnQuit:    //退出
                handler.removeCallbacks(runnable);
                unbindService(sc);
                try {
                    System.exit(0);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            case R.id.btnPre:  //上一首
                musicService.preMusic();
                break;
            case R.id.btnNext:  //下一首
                musicService.nextMusic();
                break;
            default:
                break;
        }
    }

(2)歌曲获取

   

public class MusicService extends Service {

    private String[] musicDir = new String[]{Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music/老歌翻唱大笨 - 雨中的恋人们 (Live).mp3",
            Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music/林俊杰 - 不潮不用花钱 (DJ版).mp3",
            Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music/苏谭谭 - 一声坦荡.mp3" };
    private int musicIndex = 1;
    protected ListView listview;
    public final IBinder binder = new MyBinder();
    public class MyBinder extends Binder{
        MusicService getService() {
            return MusicService.this;
        }
    }
    public static MediaPlayer mp = new MediaPlayer();
    public MusicService() {
        try {
            mp.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music/老歌翻唱大笨 - 雨中的恋人们 (Live).mp3");
            mp.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music/林俊杰 - 不潮不用花钱 (DJ版).mp3");
            mp.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music/苏谭谭 - 一身坦荡.mp3");
            mp.prepare();
            musicIndex = 1;
        } catch (Exception e) {
            Log.d("hint","can't get to the song");
            e.printStackTrace();
        }
    }

(3)播放进度(时间)


public Runnable runnable = new Runnable() {
@Override
public void run() {
if(musicService.mp.isPlaying()) {
musicStatus.setText(getResources().getString(R.string.playing));
btnPlayOrPause.setText(getResources().getString(R.string.pause).toUpperCase());
} else {
musicStatus.setText(getResources().getString(R.string.pause));
btnPlayOrPause.setText(getResources().getString(R.string.play).toUpperCase());
}
musicTime.setText(time.format(musicService.mp.getCurrentPosition()) + "/"
+ time.format(musicService.mp.getDuration()));
seekBar.setProgress(musicService.mp.getCurrentPosition());
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
musicService.mp.seekTo(seekBar.getProgress());
}
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
});
handler.postDelayed(runnable, 100);
}
};

 

 

3、项目链接:https://git.coding.net/Luowenli/music.git

 4、apk链接:https://coding.net/u/Luowenli/p/music/git/raw/master/app-debug.apk

posted @ 2018-12-11 20:03  罗文丽  阅读(173)  评论(0编辑  收藏  举报