Android MediaPlayer播放音频与视频

来源:互联网 发布:阿里云盾占用80端口 编辑:程序博客网 时间:2024/05/16 17:43

使用MediaPlayer播放音频与视频

播放音频

  1. 首先创建出一个MediaPlayer对象
MediaPlayer mMediaPlayer = new MediaPlayer();
  1. 设置声音源
public static final String FILENAME = "deserve.mp3";public static final String PATH = "/mnt/sdcard/" + FILENAME;FileInputStream fis = new FileInputStream(new File(PATH));mMediaPlayer.setDataSource(fis.getFD());// 设置声音源

3.参数设置

mMediaPlayer.setLooping(false); // 设置是否循环    /*      PlaybackParams playBackParams = new PlaybackParams();      playBackParams.setAudioFallbackMode(PlaybackParams.AUDIO_FALLBACK_MODE_FAIL);//设置音频后备模式      playBackParams.setSpeed(1.0f);// 调音速 --测试最大值为8.0f      playBackParams.setPitch(1.0f); // 调音调      mMediaPlayer.setPlaybackParams(playBackParams);    */    /*      // 使用系统的媒体音量控制      AudioAttributes attributes = new AudioAttributes.Builder()          .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)          .setFlags(AudioAttributes.FLAG_LOW_LATENCY)          .setUsage(AudioAttributes.USAGE_MEDIA)          .setLegacyStreamType(AudioManager.STREAM_MUSIC)          .build();      mMediaPlayer.setAudioAttributes(attributes);      */

4.MediaPlayer播放音频
这里在MediaPlayer类中提供了两个准备的方法,一个是同步准备prepare(),一个是异步准备prepareAsync(),建议在使用时使用prepare(),异步准备方法在调用后会立即调用setOnCompletionListener()方法,使得当前歌曲结束播放。在调用prepare()或者prepareAsync()方法后调用setOnPreparedListener()方法进行准备监听,在此监听中调用start()方法进行播放。

  1. 暂停与停止
    pause(): 暂停音乐播放
    stop() : 停止音乐播放
    reset() : 重置当前音乐

  2. 设置进度条实时显示播放进度
    (1)首先应该在布局文件中添加ProgressBar(横向)或者SeekBar,在Activity中进行初始化。
    (2)使用定时器来定时更新进度。

        //----------定时器记录播放进度---------//        Timer mTimer = new Timer();        TimerTask mTimerTask = new TimerTask() {          @Override public void run() {            seekBar.setProgress(mp.getCurrentPosition());          }        };        mTimer.schedule(mTimerTask, 0, 10);

(3)定时器的代码应该在mMediaPlayer.setOnPreparedListener()中调用。当其开始播放时开启这个定时任务,并调用seekBar.setMax(mp.getDuration());来设置进度条的最大时间,其中mp.getDuration()是获取当前播放文件的总长度。
(4)停止播放或者结束播放时,调用mTimer.cancel();来关闭定时器。

  1. 视频播放不同之处
    视频播放时要使用VideoView来进行视频的显示,此时MediaPlayer要设置一个显示器。
mMediaPlayer.setDisplay(videoView.getHolder());