【Android】使用MediaPlayer播放assets目录的音频文件
(2012-01-16 11:43:24)
标签:
androidmediaplayassetsassetfiledescriptor |
分类: Android |
1、使用MediaPlayer播放assets目录下的媒体文件
1)
通过Context.getAssets()方法获得AssetManager对象
2)
通过AssetManager对象的openFd(String
name)方法打开指定的原生资源文件夹,返回一个AssetFileDescriptor对象
3)
通过AssetFileDescriptor的getFileDescriptor()得到一个FileDescriptor对象
4) 通过public void setDataSource
(FileDescriptor fd, long offset, long
length)来创建MediaPlayer对象
5)
调用MediaPlayer.prepare()方法准备音频
6)
调用MediaPlayer的start()、pause()、stop()等方法控制
具体代码如下:
publicclass MainActivityextends Activity {
MediaPlayer mediaPlayer;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
{ try
//播放 assets/a2.mp3 音乐文件
AssetFileDescriptor fd = getAssets().openFd("a2.mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy(){
super.onDestroy();
mediaPlayer.release();
}
}
2、使用MediaPlayer播放res/raw目录下的媒体文件
直接上代码:
publicclass MainActivityextends Activity {
MediaPlayer mediaPlayer;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//播放 assets/a2.mp3 音乐文件
mediaPlayer = MediaPlayer.create(this, R.raw.a2);
//内部已经调用了prepare,这里一定不能再调用了
//mediaPlayer.prepare();
if (mediaPlayer != null) {
mediaPlayer.start();
}
}
@Override
protected void onDestroy(){
super.onDestroy();
(mediaPlayer if != null) {
mediaPlayer.release();
}
}
}
前一篇:《惠州西湖传说》 参赛成功