android中播放各种位置音频文件方法总结

1,播放应用的res/raw音频资源文件
  /**
* Play res/raw files
* @throws IOException 
* @throws IllegalStateException 
*/
public void playRawFile() throws IllegalStateException, IOException{
System.out.println("playRawFile");
mPlayer = MediaPlayer.create(this, R.raw.paomo);
mPlayer.setOnCompletionListener(mCompletionListener);
//无需调用 setDataSource()方法

//mPlayer.prepare(); //prepare()会报错
mPlayer.start(); //开始播放(新线程中执行)
handleSeekBar();
}
调用prepare()时的错误信息:
05-13 04:43:52.068: I/System.out(2309): onCreate
05-13 04:43:53.218: D/gralloc_goldfish(2309): Emulator without GPU emulation detected.
05-13 04:44:18.758: I/System.out(2309): playRawFile
05-13 04:44:18.938: E/MediaPlayer(2309): prepareAsync called in state 8 
05-13 04:44:18.938: W/System.err(2309): java.lang.IllegalStateException
05-13 04:44:18.948: W/System.err(2309): at android.media.MediaPlayer.prepare(Native Method)
05-13 04:44:18.958: W/System.err(2309): at com.stone.audioplayer.MainActivity.playRawFile(MainActivity.java:70)
05-13 04:44:18.968: W/System.err(2309): at com.stone.audioplayer.MainActivity.onClick(MainActivity.java:121)
05-13 04:44:18.968: W/System.err(2309): at java.lang.reflect.Method.invokeNative(Native Method)
05-13 04:44:18.988: W/System.err(2309): at java.lang.reflect.Method.invoke(Method.java:515)
05-13 04:44:18.988: W/System.err(2309): at android.view.View$1.onClick(View.java:3818)
05-13 04:44:18.988: W/System.err(2309): at android.view.View.performClick(View.java:4438)
05-13 04:44:18.998: W/System.err(2309): at android.view.View$PerformClick.run(View.java:18422)
05-13 04:44:19.008: W/System.err(2309): at android.os.Handler.handleCallback(Handler.java:733)
05-13 04:44:19.008: W/System.err(2309): at android.os.Handler.dispatchMessage(Handler.java:95)
05-13 04:44:19.008: W/System.err(2309): at android.os.Looper.loop(Looper.java:136)
05-13 04:44:19.018: W/System.err(2309): at android.app.ActivityThread.main(ActivityThread.java:5017)
05-13 04:44:19.018: W/System.err(2309): at java.lang.reflect.Method.invokeNative(Native Method)
05-13 04:44:19.018: W/System.err(2309): at java.lang.reflect.Method.invoke(Method.java:515)
05-13 04:44:19.028: W/System.err(2309): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-13 04:44:19.028: W/System.err(2309): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-13 04:44:19.028: W/System.err(2309): at dalvik.system.NativeStart.main(Native Method)


2,播放应用的assets/的音频资源文件


注:直接通过把路径设置为 file://android_asset/xiangqinqin.mp3的方法不行!用此方法访问里的文件是可以的!


  /**
* Play assets/ files.
* @throws IOException
*/
public void playAssetFile() throws IOException
{
System.out.println("playAssetFile");
mPlayer = new MediaPlayer();
AssetManager asm = getApplicationContext().getAssets();
AssetFileDescriptor afd = asm.openFd("xiangqinqin.mp3");
mPlayer.setOnCompletionListener(mCompletionListener);
//mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());//调用此语句时,播完指定的文件后就会结束
mPlayer.setDataSource(afd.getFileDescriptor());//诡异!!!调用此语句时,播完指定的文件,还会自动播放完raw里的文件,当所有的文件都播放时结束!
afd.close();
mPlayer.prepare(); //若不调用此函数会出错
mPlayer.start();
handleSeekBar();

}


3,播放sdcard里的音频文件
  /**
* //Play SD card Files
* @throws Exception
*/
public void playSDFile() throws Exception
{
System.out.println("playSDFile");
//String url ="/sdcard/xiangqinqin.mp3"; //OK
String url ="file:///sdcard/xiangqinqin.mp3"; //ok
mPlayer = new MediaPlayer();

//mPlayer.setLooping(true);
mPlayer.setDataSource(url); //设置url


mPlayer.prepare(); //准备播放,若省略会报错
mPlayer.setOnCompletionListener(mCompletionListener);

mPlayer.start(); //开始播放(新线程中执行)
handleSeekBar();
}


4,播放http网络音频文件
  public void playHttpFile() throws IllegalArgumentException, SecurityException, IllegalStateException, IOException //Play http file
{
//String url ="http://zhangmenshiting.baidu.com/data2/music/119386968/119386968.mp3?xcode=1b6bf65ec94961859419a416b84605e11ab3ef6f35894a4f";//OK
//String url ="http://zhangmenshiting.baidu.com/data2/music/119386968/119386968.mp3"; //Prepare Error
String url="http://zhangmenshiting.baidu.com/data2/music/35419830/35419830.mp3?xcode=72ba9a18867cd1c8b5c1b816e4466dcbf14b39c44e87b05b";

mPlayer = new MediaPlayer();
mPlayer.setDataSource(url);
mPlayer.setOnCompletionListener(mCompletionListener);
mPlayer.prepare(); //省略会报错
mPlayer.start();
handleSeekBar();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值