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