播放音頻
- 首先創(chuàng)建出一個MediaPlayer對象
MediaPlayer mMediaPlayer = new MediaPlayer();
- 設(shè)置聲音源
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());// 設(shè)置聲音源
3.參數(shù)設(shè)置
mMediaPlayer.setLooping(false); // 設(shè)置是否循環(huán)
/*
PlaybackParams playBackParams = new PlaybackParams();
playBackParams.setAudioFallbackMode(PlaybackParams.AUDIO_FALLBACK_MODE_FAIL);//設(shè)置音頻后備模式
playBackParams.setSpeed(1.0f);// 調(diào)音速 --測試最大值為8.0f
playBackParams.setPitch(1.0f); // 調(diào)音調(diào)
mMediaPlayer.setPlaybackParams(playBackParams);
*/
/*
// 使用系統(tǒng)的媒體音量控制
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類中提供了兩個準(zhǔn)備的方法漱病,一個是同步準(zhǔn)備prepare()唧喉,一個是異步準(zhǔn)備prepareAsync()衰伯,建議在使用時使用prepare()狰住,異步準(zhǔn)備方法在調(diào)用后會立即調(diào)用setOnCompletionListener()方法景鼠,使得當(dāng)前歌曲結(jié)束播放葛菇。在調(diào)用prepare()或者prepareAsync()方法后調(diào)用setOnPreparedListener()方法進(jìn)行準(zhǔn)備監(jiān)聽从媚,在此監(jiān)聽中調(diào)用start()方法進(jìn)行播放逞泄。
暫停與停止
pause(): 暫停音樂播放
stop() : 停止音樂播放
reset() : 重置當(dāng)前音樂設(shè)置進(jìn)度條實時顯示播放進(jìn)度
(1)首先應(yīng)該在布局文件中添加ProgressBar(橫向)或者SeekBar,在Activity中進(jìn)行初始化。
(2)使用定時器來定時更新進(jìn)度拜效。
//----------定時器記錄播放進(jìn)度---------//
Timer mTimer = new Timer();
TimerTask mTimerTask = new TimerTask() {
@Override public void run() {
seekBar.setProgress(mp.getCurrentPosition());
}
};
mTimer.schedule(mTimerTask, 0, 10);
(3)定時器的代碼應(yīng)該在mMediaPlayer.setOnPreparedListener()中調(diào)用喷众。當(dāng)其開始播放時開啟這個定時任務(wù),并調(diào)用seekBar.setMax(mp.getDuration());來設(shè)置進(jìn)度條的最大時間紧憾,其中mp.getDuration()是獲取當(dāng)前播放文件的總長度到千。
(4)停止播放或者結(jié)束播放時,調(diào)用mTimer.cancel();來關(guān)閉定時器赴穗。
- 視頻播放不同之處
視頻播放時要使用VideoView來進(jìn)行視頻的顯示憔四,此時MediaPlayer要設(shè)置一個顯示器。
mMediaPlayer.setDisplay(videoView.getHolder());