这是我的代码:
public void playSound(String uri,int flag)
{
Uri uri1=Uri.parse(uri);
ContestVoteFragment fragment = (ContestVoteFragment) fragments.get(0);
if (fragment.playSound(flag))
{
if (mediaPlayer==null)
{
mediaPlayer=new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(uri);
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
}else {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer=new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(uri);
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
}
}else {
if (mediaPlayer!=null)
{
if (mediaPlayer.isPlaying())
{
mediaPlayer.stop();
}
}
}
}
}但是当我播放一个互联网mp3时,错误信息是无法打开http://p9snltngh.bkt.clouddn.com/Fs3M3Cq_Mkex9AsunJt57N22JQp2:java.io.FileNotFoundException: No content provider我无法理解,因为“http://p9snltngh.bkt.clouddn.com/FhEbUwGYcmQbXIVMVzd0GyPypDVC”这个uri可以播放。
发布于 2018-11-08 14:46:38
两个链路都正常工作
public void playSound(String uri){
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(uri);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}发布于 2018-11-08 14:52:34
解决方案:您需要将字符串URI解析为URI类。所以,
而不是:
try {
mediaPlayer.setDataSource(uri);
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}试着这样做:
try {
mediaPlayer.setDataSource(this, Uri.parse(uri));
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}https://stackoverflow.com/questions/53202525
复制相似问题