MediaPlayer播放录音时,网络路径错误时报错:java.io.IOException: Prepare failed.: status=0x1;

解决: mp.setDataSource(PATH_TO_FILE); 
    mp.prepare(); 
这个地方修改如下: 
File file = new File(strPath); 
FileInputStream fis = new FileInputStream(file); 
mediaPlayer.setDataSource(fis.getFD()); 

mp.prepare(); 

(此方法不适用网络语音)

或者 
把mediaPlayer.prepare;改成 

mediaPlayer.prepareAsync(); 

原理:prepare方法是将资源同步缓存到内存中,一般加载本地较小的资源可以用这个,如果是较大的资源或者网络资源建议使用prepareAsync方法,异步加载.但如果想让资源启动,即start()起来,因为在异步中,如果不设置监听直接start的话,是拿不到这个资源,如果让线程睡眠一段时间,则可以取得资源,因为这个时候,异步线程已经取得资源,但不可能使用线程睡眠的方式来获取资源啊.所以就需要设置监听事件setOnPreparedListener();来通知MediaPlayer资源已经获取到了,然后实现onPrepared(MediaPlayer mp)方法.在里面启动MediaPlayer

猜你喜欢

转载自blog.csdn.net/qq_26075861/article/details/80460523