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();    }}

原创粉丝点击