最近使用MediaPlayer播放網(wǎng)絡(luò)資源音頻時徽曲,遇到一個問題,
就是在使用紅米手機(jī)播放時麸塞,會提示播放錯誤秃臣,mediaPlayer.prepare();報了IO異常java.io.IOException: Prepare failed.: status=0x1,但是使用nexus 6p并沒有出現(xiàn)哪工,這也就表示只有部分的手機(jī)會出現(xiàn)這種問題奥此。
報錯源碼為:
mediaPlayer.reset();
mediaPlayer.setDataSource(videoUrl);
mediaPlayer.prepare();// prepare之后自動播放
當(dāng)我google之后得出的答案都是
File tempFile = new File(path);
FileInputStream fis = new FileInputStream(tempFile);
mediaPlayer.reset();
mediaPlayer.setDataSource(fis.getFD());
mediaPlayer.prepare();
mediaPlayer.start();
其實這個方案只適合播放本地音頻,并不能解決網(wǎng)絡(luò)音頻的問題雁比。
后來我嘗試了多種方案稚虎,發(fā)現(xiàn)了能播放的方法
mediaPlayer = MediaPlayer.create(context, Uri.parse(videoUrl));
mediaPlayer.start();
然后我想,是不是播放的方法不對偎捎,嘗試了一下將prepare()替換成star()蠢终,然而并沒有用,還是會報錯茴她。
再次對比寻拂,是不是設(shè)置videoUrl的方法有問題,不應(yīng)該直接傳Strring類型的丈牢,而應(yīng)該轉(zhuǎn)成Uri祭钉,一試之后,果然可行赡麦,所以最終解決MediaPlayer播放網(wǎng)絡(luò)資源音頻報java.io.IOException: Prepare failed.: status=0x1的方法為:
mediaPlayer.reset();
mediaPlayer.setDataSource(context, Uri.parse(videoUrl));
mediaPlayer.prepare();// prepare之后自動播放
希望對大家都有幫助朴皆,謝謝