小编Joh*_*han的帖子

在使用Android 2.2的HTC Desire上使用Android MediaPlayer进行流式传输时的奇怪行为

在我的一个项目中,我正在使用无尽的流来实现现场广播.我可以毫无问题地使用nativ Android MediaPlayer,也可以在运行旧版Android的设备上使用,因为该流的类型为audio/mpeg.我在运行1.6的HTC Magic上进行了测试,它运行完美无缺.即使在WLAN和3G之间切换它也只是缓冲起来,我只注意到一个小打嗝,然后它继续播放,好像什么也没发生.它也很少丢失连接,因为我在工作日期间一直在收听广播,也在上下班途中收听,以确保用户体验与我想要的完全一样.我已经为其他设备重复了相同的程序,例如运行Android 2.1的HTC Legend,运行2.2的HTC Wildfire和运行2.2的三星Galaxy Tab,结果相同.所有设备都能完美地处理流.

然而,这就是我遇到困难的地方,在运行2.2的HTC Desire上我遇到了严重的问题让游戏进行播放.当使用MediaPlayer的标准实现,即setDataSource(字符串路径)时,它会播放10 - 30秒,即使我在WLAN和3G上都有完全接收,它也会失去连接.我尝试了不同的方法来解决这个问题,一个是使用NPR新闻项目的StreamProxy,经过一些修改后实际上工作得很好.然而,HTC Desire仍然不时地断开连接,并且在某些情况下尝试重新连接4-5次,直到它实际上成功地保持稳定的连接.

我在使用代理时遇到的错误如下所示

08-08 09:35:17.810: ERROR/AwesomePlayer(67): Not sending buffering status because duration is unknown.
08-08 09:35:19.849: ERROR/HTTPStream(67): recv failed, errno = 11 (Try again)
08-08 09:35:19.849: INFO/HTTPDataSource(67): Retry ... 2 times left
08-08 09:35:19.849: WARN/HTTPStream(67): Calling connect()...
08-08 09:35:19.849: WARN/HTTPStream(67): Returned from connect()...
08-08 09:35:20.739: ERROR/(1576): Broken pipe
08-08 09:35:20.739: ERROR/(1576): java.net.SocketException: Broken pipe
08-08 09:35:20.739: ERROR/(1576):     at org.apache.harmony.luni.platform.OSNetworkSystem.writeSocketImpl(Native Method)
08-08 09:35:20.739: ERROR/(1576):     at org.apache.harmony.luni.platform.OSNetworkSystem.write(OSNetworkSystem.java:723) …
Run Code Online (Sandbox Code Playgroud)

java streaming android

13
推荐指数
1
解决办法
1763
查看次数

标签 统计

android ×1

java ×1

streaming ×1