Android MediaPlayer赢得';不要从URL播放音乐
我有一个服务器端的webapp,它提供文件上传和下载功能,还有一个Android应用,它将音乐文件上传到网站上,然后通过一些URL请求上传的文件 我的URL的结构如下:Android MediaPlayer赢得';不要从URL播放音乐,android,audio,media-player,Android,Audio,Media Player,我有一个服务器端的webapp,它提供文件上传和下载功能,还有一个Android应用,它将音乐文件上传到网站上,然后通过一些URL请求上传的文件 我的URL的结构如下:http://mywebsite:8080/api/v1/files/fileById?fileId= 当我试图从网络浏览器获取文件时,它工作正常;浏览器下载文件,操作系统可以播放它。但当我试图将前面描述的URL作为数据源放入MediaPlayer时,我得到了java.io.IOException:setDataSource失败。
http://mywebsite:8080/api/v1/files/fileById?fileId=
当我试图从网络浏览器获取文件时,它工作正常;浏览器下载文件,操作系统可以播放它。但当我试图将前面描述的URL作为数据源放入MediaPlayer时,我得到了java.io.IOException:setDataSource失败。
MediaPlayer使用代码:
private void startPlaying(Uri fileUri) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(this, fileUri);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(preparedPlayer -> preparedPlayer.start());
}
catch (IOException e) {
LogUtil.loge(LOG_TAG, e);
stopPlaying();
return;
}
mediaPlayer.setOnCompletionListener(mp -> stopPlaying());
}
private void stopPlaying() {
if (mediaPlayer == null) { return; }
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
UPD:也许我必须在服务器端实现文件的直接链接。从URL播放音乐的所有示例都请求直接指向该文件的URL
有什么建议吗?如果要播放URL中的音乐,必须输入字符串参数 改为:
private void startPlaying(String url) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(preparedPlayer -> preparedPlayer.start());
}
catch (IOException e) {
LogUtil.loge(LOG_TAG, e);
stopPlaying();
return;
}
mediaPlayer.setOnCompletionListener(mp -> stopPlaying());
}
如果要播放URL中的音乐,必须输入字符串参数 改为:
private void startPlaying(String url) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(preparedPlayer -> preparedPlayer.start());
}
catch (IOException e) {
LogUtil.loge(LOG_TAG, e);
stopPlaying();
return;
}
mediaPlayer.setOnCompletionListener(mp -> stopPlaying());
}
我想我可以结束这个问题,因为我已经通过使用外部服务的URL检查了代码的正确性,该服务运行良好。我发现这个问题是我的服务器端应用程序中的一个问题。Android应用程序代码是正确的。我想我可以结束这个问题,因为我已经通过使用外部服务的URL检查了代码的正确性,该服务运行良好。我发现这个问题是我的服务器端应用程序中的一个问题。Android应用程序代码是正确的。不幸的是,
setDataSource
方法中没有包含两个参数的字符串参数。URI onlychange mediaPlayer.setDataSource(这个url);到mediaPlayer.setDataSource(url);java.io.IOException也存在同样的问题:setDataSource失败。遗憾的是,setDataSource
方法中没有包含2个参数的字符串参数。URI onlychange mediaPlayer.setDataSource(这个url);到mediaPlayer.setDataSource(url);java.io.IOException也存在同样的问题:setDataSource失败。