接下来笔者介绍一下Android中播放音频的几种方式,android.media包下面包含了Android开发中媒体类,当然笔者不会依次去介绍,下面介绍几个音频播放中常用的类:
1.使用MediaPlayer播放音频
MediaPlayer的功能很强大,下面附上一张该类封装音频的生命周期图:
MediaPlayer支持AAC、AMR、FLAC、MP3、MIDI、OGG、PCM等格式,MediaPlayer可以通过设置元数据和播放源来音频。
1.1播放Raw文件夹下面音频的元数据
//直接创建,不需要设置setDataSource MediaPlayer mMediaPlayer;
mMediaPlayer=MediaPlayer.create(this, R.raw.audio);
mMediaPlayer.start();
1.2通过设置播放源来播放音频文件
setDataSource(String path)
//从sd卡中加载音乐 mMediaPlayer.setDataSource("../music/samsara.mp3") ; //从网路加载音乐 mMediaPlayer.setDataSource("http://..../xxx.mp3") ; //需使用异步缓冲 mMediaPlayer.prepareAsync() ;
setDataSource(FileDescriptor fd)
//需将资源文件放在assets文件夹 AssetFileDescriptor fd = getAssets().openFd("samsara.mp3"); mMediaPlayer.setDataSource(fd) mMediaPlayer.prepare() ; Ps:此方法系统需大于等于android
setDataSource(Context context,Uri uri)
这个方法没什么好说的,一般通过ContentProvider获取Android系统提供
的共享music获取uri,然后设置数据播放
setDataSource(FileDescptor fd,long offset,long length)
//需将资源文件放在assets文件夹 AssetFileDescriptor fd = getAssets().openFd("samsara.mp3"); mMediaPlayer.setDataSource(fd, fd.getStartOffset(), fd.getLegth()) mMediaPlayer.prepare() ;
设置完数据源,不要忘记prepare(),尽量使用异步prepareAync(),这样不会阻塞UI线程。
1.3 常用的方法
start();//开始播放 pause();//暂停播放 reset()//清空MediaPlayer中的数据 setLooping(boolean);//设置是否循环播放 seekTo(msec)//定位到音频数据的位置,单位毫秒 stop();//停止播放 relase();//释放资源
2.使用SoundPool播放音频
3.使用AndroidTrack播放音频
4.使用AsyncPlayer播放音频
5.使用JetPlayer播放音频
6.使用Ringtone播放音频
7.总结