播放音频
- 首先创建出一个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());