Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 5.0中MediaPlayer抛出错误(棒棒糖)_Android_Android Mediaplayer - Fatal编程技术网

Android 5.0中MediaPlayer抛出错误(棒棒糖)

Android 5.0中MediaPlayer抛出错误(棒棒糖),android,android-mediaplayer,Android,Android Mediaplayer,我已经编写了一个媒体应用程序,它使用HTTP连接传输MP3。这在Android版本2.x-4.x上运行得很好,但现在在5.x中产生了错误。该应用程序在包含MP3的播放列表对象中循环,每个对象都有自己唯一的HTTP地址。调用prepareAsync() 07-04 18:57:19.785 65-10860/? E/NuCachedSource2﹕ source returned error -1, 10 retries left 07-04 18:57:22.874 65-108

我已经编写了一个媒体应用程序,它使用HTTP连接传输MP3。这在Android版本2.x-4.x上运行得很好,但现在在5.x中产生了错误。该应用程序在包含MP3的播放列表对象中循环,每个对象都有自己唯一的HTTP地址。调用
prepareAsync()

07-04 18:57:19.785     65-10860/? E/NuCachedSource2﹕ source returned error -1, 10 retries left
07-04 18:57:22.874     65-10860/? E/NuCachedSource2﹕ source returned error -1, 9 retries left
07-04 18:57:25.907     65-10860/? E/NuCachedSource2﹕ source returned error -1, 8 retries left
07-04 18:57:28.929     65-10860/? E/NuCachedSource2﹕ source returned error -1, 7 retries left
07-04 18:57:31.972     65-10860/? E/NuCachedSource2﹕ source returned error -1, 6 retries left
07-04 18:57:35.024     65-10860/? E/NuCachedSource2﹕ source returned error -1, 5 retries left
07-04 18:57:38.062     65-10860/? E/NuCachedSource2﹕ source returned error -1, 4 retries left
07-04 18:57:41.085     65-10860/? E/NuCachedSource2﹕ source returned error -1, 3 retries left
07-04 18:57:44.110     65-10860/? E/NuCachedSource2﹕ source returned error -1, 2 retries left
07-04 18:57:47.262     65-10860/? E/NuCachedSource2﹕ source returned error -1, 1 retries left
07-04 18:57:50.294     65-10860/? E/NuCachedSource2﹕ source returned error -1, 0 retries left
07-04 18:57:50.419     65-10857/? E/GenericSource﹕ Failed to init from data source!
07-04 18:57:50.428    9592-9758/net.kicksass.shootingstarbbs.streamstar E/MediaPlayer﹕ error (1, -2147483648)
07-04 18:57:50.429    9592-9592/net.kicksass.shootingstarbbs.streamstar E/MediaPlayer﹕ Error (1,-2147483648)
通常,应用程序会调用MediaPlayer的
setDataSource(url)
,然后调用
prepareAsync()
,然后等待
onPreparedListener
启动,然后调用
start()
开始流媒体。流式处理完成后,它会调用
reset()
,然后调用
setDataSource(url)
,流程将在此处再次开始


为什么棒棒糖的MediaPlayer会抛出此错误?

它看起来像是
setDataSource(string)
方法,该方法用于使用以前版本的Android自动编码传入的URL,但在v5.x中不再使用。发生错误的原因是web服务器返回HTTP 404 Not Found。在将URL传递到
setDataSource()
之前对其进行编码时,它会工作


更让人困惑的是,我的应用程序对URL的编码不一致,所以有时有效,有时无效。

我在棒棒糖上也遇到了这个问题。URL中的空格导致我出现此问题。我用%20替换了空格,效果很好

以前是:mPlayer.setDataSource(myUrl);

更改为:mPlayer.setDataSource(myUrl.replaceAll(“,“%20”)由于涉及到监听器、调用的方法等,因此需要发布大量代码。我试图按照调用顺序总结我调用的MediaPlayer方法。我希望其他人看到了这些错误并找到了解决方案,否则我将不得不开始试验。你是如何编码的。我有一个简单的URL,这需要编码吗?@Diffy我基本上使用了
String encodedPath=URLEncoder.encode(路径,“UTF-8”)
来编码,然后不得不将一些百分比编码改回ASCII。例如,
encodedPath=encodedPath.replace(“%2F”和“/”)
。我还对空格和加号(不是一个包含所有麻烦字符的列表)进行了此操作