1.MediaPlayer
//设置音频流类型(即以何种类型播放)
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//媒体、视频、游戏
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);//铃声(lai'di)
mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);//闹铃
mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);//提示音(通知)
//自带音频
MediaPlayer mediaPlayer=MediaPlayer.create(MainActivity.this,R.raw.music);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置音频流类型(即以何种类型播放)
mediaPlayer.start();
//SD卡中小资源
MediaPlayer mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource("SD卡资源路径");//设置资源
mediaPlayer.prepare();//解析
mediaPlayer.start();
//SD卡中大资源或网络音频
MediaPlayer mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource("SD卡资源路径或网络资源(http://www.xxx.mp3)");//设置资源
mediaPlayer.prepareAsync();//解析
//设置解析监听
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mediaPlayer) {
//解析完成时执行本方法
mediaPlayer.start();
}
});
//MediaPlayer使用结束时
mediaPlayer.stop();//停止播放
mediaPlayer.release();//释放资源
2.MediaPlayer常用方法
mediaPlayer.pause() //暂停
mediaPlayer.reset() //重置MediaPlayer对象(释放资源,重新使用需再次设置资源)
mediaPlayer.seekTo(int i) //从指定位置开始播放音频
mediaPlayer.isPlaying() //是否在播放
mediaPlayer.getDuration() //获取时长(毫秒)
mediaPlayer.getCurrentPosition() //获取当前播放位置
mediaPlayer.start() //开始播放
mediaPlayer.prepare() //解析(小音频)
mediaPlayer.prepareAsync() //解析(大音频、网络资源)
mediaPlayer.stop() //停止播放
mediaPlayer.release() //释放资源
3.MediaPlayer与SurfaceView配合使用播放视频
(1) 创建MediaPlayer(媒体播放器)
//应用自带资源
MediaPlayer mediaPlayer=MediaPlayer.create(MainActivity.this,R.raw.~);
mediaPlayer.setAudio
//小音频视频
MediaPlayer mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource("~");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//大音频
MediaPlayer mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource("~");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
(2)等待SurfaceView创建完成,并将SurfaceHolder绑定给MediaPlayer,绑定后进行解析,解析后开始播放
//应用自带资源
SurfaceView surfaceView=findViewById("~");
SurfaceHolder holder=surfaceView.getHolder(); //获得持有者
holder.addCallback(new Callback(){ //添加回调
public void surfaceCreated(SurfaceHolder surfaceHolder){
mediaPlayer.Display(surfaceHolder); //绑定
//自带资源无需解析
mediaPlayer.start();
}
});
//小音频视频
SurfaceView surfaceView=findViewById("~");
SurfaceHolder holder=surfaceView.getHolder(); //获得持有者
holder.addCallback(new Callback(){ //添加回调
public void surfaceCreated(SurfaceHolder surfaceHolder){
mediaPlayer.Display(surfaceHolder); //绑定
mediaPlayer.prepare(); //解析
mediaPlayer.start(); //无需等待解析
}
});
//大音频视频,网络资源
SurfaceView surfaceView=findViewById("~");
SurfaceHolder holder=surfaceView.getHolder(); //获得持有者
holder.addCallback(new Callback(){ //添加回调
public void surfaceCreated(SurfaceHolder surfaceHolder){
mediaPlayer.Display(surfaceHolder); //绑定
mediaPlayer.prepareAnsy(); //解析
mediaPlayer.setOnPrepareListener(new OnPrepareListener(){
public void onPrepared(MediaPlayer player){
mediaPlayer.start(); //解析完成才能播放
});
}
});
(3)注意事项:
1* SurfaceView创建完成后(执行回调后)才能将SurfaceHolder绑定给MediaPlayer
2* 绑定后再解析
3* 解析完成后再播放
4* SurfaceView在Activity生命周期onRestart()中会重建,即再次调用Callback()中的surfaceCreated()方法,所以不能在此方法中创建MediaPlayer;且因为重建,MediaPlayer的绑定及解析需要在本方法中添加。