Android 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());
上一篇:hbase源码系列(十五)终结篇&Scan续集-->如何查询出来下一个KeyValue


下一篇:细说一下RedisTemplate的使用方法(十)