MediaPlayer和Seekbar
<SeekBar
android:id="@+id/voice_progress"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:progressTint="#22C580"
android:thumbTint="#22C580"
android:maxHeight="2dip"
android:minHeight="2dip"
android:paddingLeft="0dip"
android:paddingRight="0dip"/>
thumbTint //滑块颜色
progressTint //进度条颜色
//初始化MediaPlayer
mMediaPlayer = new MediaPlayer();
//播放完成监听
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
//设置播放文件源
mMediaPlayer.setDataSource(audioFile.getAbsolutePath());
mMediaPlayer.prepare();
mMediaPlayer.start();
//设置不循环播放
mMediaPlayer.setLooping(false);
//设置seekbar长度
mSeekBar.setMax(mMediaPlayer.getDuration());
//获取当前播放进度
int currentSecond = mMediaPlayer.getCurrentPosition();
//设置seekbar上进度
mSeekBar.setProgress(currentSecond);
//Seekbar手动滑动播放
实现SeekBar.OnSeekBarChangeListener接口,重写一下三个方法
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
mCurrentTime.setText(NoteUtils.secondToTime(progress/1000)+"/");
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
voiceHandler.removeMessages(UPDATE_SEEKBAR_PROGRESS);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//指定开始播放位置
mMediaPlayer.seekTo(seekBar.getProgress());
if (mMediaPlayer.isPlaying()) {
voiceHandler.removeMessages(UPDATE_SEEKBAR_PROGRESS);
voiceHandler.sendEmptyMessage(UPDATE_SEEKBAR_PROGRESS);
}
}
https://www.cnblogs.com/8023-itxinde/p/5212240.html