我已经编写了一个使用HTTP连接流式播放MP3的媒体应用。这在Android版本2.x - 4.x上运行良好,但现在在5.x中产生错误。该应用程序循环播放包含MP3的播放列表对象,每个MP3都有自己唯一的HTTP地址。第一个文件流正常,但下一个文件(不管哪个文件)在调用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)
时会产生以下错误:
setDataSource(url)
一般情况下,该应用会调用MediaPlayer prepareAsync()
后跟onPreparedListener
,然后等待start()
触发,然后调用reset()
开始流式传输。完成流式传输后,它会调用setDataSource(url)
,然后调用enum State
,然后再次开始此过程。
为什么Lollipop的MediaPlayer会抛出此错误?
答案 0 :(得分:2)
看起来setDataSource(string)
方法用于使用以前版本的Android自动编码传入的URL,但不再使用v5.x.发生错误的原因是Web服务器返回了HTTP 404 Not Found。当我在将URL传递给setDataSource()
之前对其进行编码时,它可以正常工作。
为了进一步混淆事情,我的应用程序对URL进行了不一致的编码,因此有时它会起作用,有时则不起作用。
答案 1 :(得分:1)
我也在棒棒糖上遇到过这个问题。 URL中的空格对我来说是个问题。我用%20替换了空格,它工作正常。
used to be: mPlayer.setDataSource(myUrl);
changed to: mPlayer.setDataSource(myUrl.replaceAll(" ","%20"));

希望这有助于曾经有过这个问题。编码技巧对我没有用,但让我在正确的轨道上为我解决这个问题。