Android MediaPlayer播放音訊與視訊
阿新 • • 發佈:2019-01-09
使用MediaPlayer播放音訊與視訊
播放音訊
- 首先創建出一個MediaPlayer物件
MediaPlayer mMediaPlayer = new MediaPlayer();
- 設定聲音源
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()方法進行播放。
暫停與停止
pause(): 暫停音樂播放
stop() : 停止音樂播放
reset() : 重置當前音樂設定進度條實時顯示播放進度
(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();來關閉定時器。
- 視訊播放不同之處
視訊播放時要使用VideoView來進行視訊的顯示,此時MediaPlayer要設定一個顯示器。
mMediaPlayer.setDisplay(videoView.getHolder());