MediaPlayer播放音频
还有一种是soundpool 播放多个短促声音 游戏常用
简单播放
0.添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
1.播放SD卡音频
//sd卡歌曲
mediaplayer=new MediaPlayer();
mediaplayer.setDataSource("/storage/sdcard/cbg.mp3");
mediaplayer.prepare();//准备工作
mediaplayer.start();
2.播放网络音频
因为网络音频需要耗时 需要 异步加载 监听加载完成后 播放
mediaplayer=new MediaPlayer();
mediaplayer.setDataSource("http://mp3hot.9ku.com/hot/2009/08-27/186947.mp3");
mediaplayer.prepareAsync();
//准备完成的监听
mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaplayer.start();
}
});
3.播放自带音频
不需要prepare 方法
mediaplayer = MediaPlayer.create(this, R.raw.dp);
mediaplayer.start();
常用方法
暂停播放
if (mediaplayer!=null&&mediaplayer.isPlaying()) {
mediaplayer.pause();
btPlay.setImageResource(R.mipmap.pause);
}
停止播放
public void stop(){
if(mediaplayer!=null){
mediaplayer.stop();//stop 后 要想再播放 需要重新new mediaplayer
mediaplayer.release();//释放
mediaplayer=null;
btPlay.setImageResource(R.mipmap.pause);
}
}
getCurrentPosition( ):得到当前的播放位置
getDuration() :得到文件的时间
getVideoHeight() :得到视频高度
getVideoWidth() :得到视频宽度
isLooping():是否循环播放
isPlaying():是否正在播放
pause():暂停
prepare():准备(同步)
prepareAsync():准备(异步)
release():释放MediaPlayer对象
reset():重置MediaPlayer对象
seekTo(int msec):指定播放的位置(以毫秒为单位的时间)
setAudioStreamType(int streamtype):指定流媒体的类型
setDisplay(SurfaceHolder sh):设置用SurfaceHolder来显示多媒体
setLooping(boolean looping):设置是否循环播放
setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener): 网络流媒体的缓冲监听
setOnCompletionListener(MediaPlayer.OnCompletionListener listener): 网络流媒体播放结束监听
setOnErrorListener(MediaPlayer.OnErrorListener listener): 设置错误信息监听
setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener): 视频尺寸监听
setScreenOnWhilePlaying(boolean screenOn):设置是否使用SurfaceHolder显示
setVolume(float leftVolume, float rightVolume):设置音量
start():开始播放
stop():停止播放