Android 5.0中MediaPlayer抛出错误(棒棒糖)
我已经编写了一个媒体应用程序,它使用HTTP连接传输MP3。这在Android版本2.x-4.x上运行得很好,但现在在5.x中产生了错误。该应用程序在包含MP3的播放列表对象中循环,每个对象都有自己唯一的HTTP地址。调用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
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”和“/”)
。我还对空格和加号(不是一个包含所有麻烦字符的列表)进行了此操作