MediaPlayer
来源:互联网 发布:sql nvl to_number 编辑:程序博客网 时间:2024/06/08 06:37
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(); }}
阅读全文
0 0
- mediaplayer
- mediaplayer
- mediaplayer
- MediaPlayer
- MediaPlayer
- MediaPlayer
- MediaPlayer
- mediaplayer
- MediaPlayer
- MediaPlayer
- mediaplayer
- MediaPlayer
- MediaPlayer
- Mediaplayer
- MediaPlayer
- MediaPlayer
- MediaPlayer
- MediaPlayer
- 欢迎使用CSDN-markdown编辑器
- 联动comobo
- git常用命令
- 关于c/c++中static
- czl蒻蒟的OI之路5
- MediaPlayer
- mysql 索引优化、使用原则及注意事项
- 栈
- Codeforces 854C. Planning 贪心
- IOS中子线程刷新UI
- PHP采集(远程抓取) 自定义函数
- 使用 vue-cli 搭建项目
- java常量池
- Linux-centos下安装nginx和tengine