packagecom.example.logintest;importandroidx.appcompat.app.AppCompatActivity;importandroid.media.MediaPlayer;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.SeekBar;importjava.io.IOException;importjava.util.Timer;importjava.util.TimerTask;public class MaikefengActivity extendsAppCompatActivity {privateButton startmusic,pausemusic,restartmusic;privateMediaPlayer mediaPlayer;privateSeekBar seekBar;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maikefeng);
initView();//开始播放
startmusic.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {//1.初始化midiaplayer
mediaPlayer = newMediaPlayer();try{
mediaPlayer.reset();//2.设置要播放的资源位置 path 可以是网络路径 也可以是本地路径
mediaPlayer.setDataSource("/mnt/sdcard/Music/iPhone.mp3");//3.准备播放
mediaPlayer.prepare();//4.开始播放
mediaPlayer.start();//5.更新进度条
updateSeekBar();
}catch(IOException e) {
e.printStackTrace();
}
}
});//暂停播放
pausemusic.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
mediaPlayer.pause();
}
});//继续播放
restartmusic.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
mediaPlayer.start();
}
});//给seekBar设置监听事件
setSeekBarChange();
}private voidsetSeekBarChange() {
seekBar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener() {//当进度改变
@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, booleanfromUser) {
}//当开始拖动
@Overridepublic voidonStartTrackingTouch(SeekBar seekBar) {
}//当拖动停止的时候调用
@Overridepublic voidonStopTrackingTouch(SeekBar seekBar) {
seekTo(seekBar.getProgress());
}
});
}//实现指定播放的位置
public void seekTo(intposition){
mediaPlayer.seekTo(position);
}private voidupdateSeekBar() {//1.获取当前播放的总长度
final int duration =mediaPlayer.getDuration();//2.使用Timer 定时器 去定时获取当前进度
final Timer timer = newTimer();final TimerTask task = newTimerTask() {
@Overridepublic voidrun() {//3.一秒获取一次当前进度
int currentPosition =mediaPlayer.getCurrentPosition();//设置seekBar进度
seekBar.setMax(duration);//当前进度
seekBar.setProgress(currentPosition);
}
};//100毫秒后 每隔1秒 执行一次run方法
timer.schedule(task,100,1000);//当歌曲执行完毕时,把timer 和 timertask 取消//设置播放完成的监听
mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener() {
@Overridepublic voidonCompletion(MediaPlayer mp) {
timer.cancel();
task.cancel();
}
});
}private voidinitView() {
startmusic=findViewById(R.id.start_music);
pausemusic=findViewById(R.id.pause_music);
restartmusic=findViewById(R.id.restart_music);
seekBar=findViewById(R.id.seekBar);
}
}