public class VoiceNavigationActivity extends BaseActivity implements SeekBar.OnSeekBarChangeListener {
private MediaPlayer mMediaPlayer = null;//媒体播放器
private AudioManager mAudioManager = null;//声音管理器
private SeekBar mSoundSeekBar = null;
private int maxStreamVolume;//最大音量
private int currentStreamVolume;//当前音量
private int setStreamVolume;//设置的音量
private CheckBox bt;
private TextView text;
private Timer mTimer;
private TimerTask mTimerTask;
private ProgressBar progressBar2;
private TextView time_text;
private String url="http://ssapi.shaolinsi.gov.cn/admin/../uploadfile/intro/1-1.mp3";
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
time_text.setText(FormatUtil.formatTime(mMediaPlayer.getCurrentPosition()) + "/" + FormatUtil.formatTime(mMediaPlayer.getDuration()));
if (mMediaPlayer.getCurrentPosition() == mMediaPlayer.getDuration()) {
bt.setChecked(true);
time_text.setText("00:00/"+mMediaPlayer.getDuration());
mMediaPlayer.seekTo(0);
}
}
};
private boolean isChanging = false;//互斥变量,防止定时器与SeekBar拖动时进度冲突
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voice_navigation);
text = (TextView) findViewById(R.id.text);
bt = (CheckBox) findViewById(R.id.bt);
time_text = (TextView) findViewById(R.id.time_text);
// mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.kalimba);
progressBar2= (ProgressBar) findViewById(R.id.progressBar2);
setplayer();
}
private void setplayer() {
mMediaPlayer=new MediaPlayer();
mAudioManager = (AudioManager) this.getSystemService(AUDIO_SERVICE);
mSoundSeekBar = (SeekBar) findViewById(R.id.SoundSeekBar);
progressBar2.setVisibility(View.VISIBLE);
bt.setVisibility(View.INVISIBLE);
try {
mMediaPlayer.reset();
mMediaPlayer.setDataSource(url);
mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
mSoundSeekBar.setSecondaryProgress(percent);
}
});
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
progressBar2.setVisibility(View.INVISIBLE);
bt.setVisibility(View.VISIBLE);
;
setmMediaPlayer();
}
});
mMediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
private void setmMediaPlayer() {
bt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {// 没有播放
if (mMediaPlayer.isPlaying()) {
mMediaPlayer.pause();
}
} else {
mMediaPlayer.start();
if (mTimer == null) {
mTimer = new Timer();
}
if (mTimerTask == null) {
mTimerTask = new TimerTask() {
@Override
public void run() {
if (isChanging == true) {
return;
}
Message message = handler.obtainMessage();
if (mMediaPlayer.getDuration() > mMediaPlayer.getCurrentPosition()) {
handler.sendMessage(message);
mSoundSeekBar.setProgress(mMediaPlayer.getCurrentPosition() * 100 / mMediaPlayer.getDuration());
} else {
handler.sendMessage(message);
mMediaPlayer.pause();
mSoundSeekBar.setProgress(0);
mTimer.cancel();
mTimer = null;
mTimerTask.cancel();
mTimerTask = null;
return;
}
}
};
mTimer.schedule(mTimerTask, 0, 1000);
}
}
}
});
maxStreamVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
currentStreamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mSoundSeekBar.setProgress(0);
mSoundSeekBar.setOnSeekBarChangeListener(this);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mMediaPlayer.seekTo(seekBar.getProgress() * mMediaPlayer.getDuration() / 100);
isChanging = true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mMediaPlayer.seekTo(seekBar.getProgress() * mMediaPlayer.getDuration() / 100);
isChanging = false;
}
@Override
protected void onDestroy() {
super.onDestroy();
mMediaPlayer.pause();
if (mMediaPlayer.isPlaying()) {
mMediaPlayer.stop();
mMediaPlayer.release();
if(mTimerTask!=null){
mTimerTask.cancel();
}
}
}
@Override
public void onBackPressed() {
mMediaPlayer.pause();
if (mMediaPlayer.isPlaying()) {
mMediaPlayer.stop();
mMediaPlayer.release();
if(mTimerTask!=null){
mTimerTask.cancel();
}
}
super.onBackPressed();
}
}
MediaPlayer
最新推荐文章于 2022-04-19 20:45:25 发布