我们最近收到了关于三星Galaxy S4上我们的Android应用中音频无法播放的报告。在其他设备上,该应用程序正常运行。
使用MediaPlayer流式传输音频。使用Android Socket方法在本地保存。
Logcat中的警告是由以下原因引起的:
堆栈跟踪如下:
当我注释掉代理代码时,流可以播放,但是它会开始播放一秒钟,然后缓冲2-3秒钟,之后才恢复播放。任何解决方案都将不胜感激。
我找到了类似的问题,但它们没有得到解决:
- Android : Socket - java.net.SocketException: sendto failed: EPIPE (Broken pipe) - Media Player socket exception in Samsung Grand
使用MediaPlayer流式传输音频。使用Android Socket方法在本地保存。
Logcat中的警告是由以下原因引起的:
try {
byte[] buffer = httpString.toString().getBytes();
int readBytes = -1;
Log.d(LOG_TAG, "writing to client");
client.getOutputStream().write(buffer, 0, buffer.length);
// Start streaming content.
byte[] buff = new byte[1024 * 64];
while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) {
client.getOutputStream().write(buff, 0, readBytes);
}
}
堆栈跟踪如下:
D/StreamProxy(3913): downloaded
D/StreamProxy(3913): downloading...
D/StreamProxy(3913): reading headers
D/StreamProxy(3913): headers done HTTP/1.0 200 OK
D/StreamProxy(3913): Content-Type: audio/mpeg
D/StreamProxy(3913):
D/StreamProxy(3913): writing to client
W/StreamProxy(3913): Broken pipe.
W/StreamProxy(3913): java.net.SocketException: sendto failed: EPIPE (Broken pipe)
W/StreamProxy(3913): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
W/StreamProxy(3913): at libcore.io.IoBridge.sendto(IoBridge.java:475)
W/StreamProxy(3913): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507)
W/StreamProxy(3913): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
W/StreamProxy(3913): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
W/StreamProxy(3913): at com.gm.mobile.util.StreamProxy.processRequest(StreamProxy.java:234)
W/StreamProxy(3913): at com.gm.mobile.util.StreamProxy.run(StreamProxy.java:123)
W/StreamProxy(3913): at java.lang.Thread.run(Thread.java:856)
W/StreamProxy(3913): Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe)
W/StreamProxy(3913): at libcore.io.Posix.sendtoBytes(Native Method)
W/StreamProxy(3913): at libcore.io.Posix.sendto(Posix.java:151)
W/StreamProxy(3913): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
W/StreamProxy(3913): at libcore.io.IoBridge.sendto(IoBridge.java:473)
W/StreamProxy(3913): ... 6 more
E/(3913): client closing
D/StreamProxy(3913): Proxy interrupted. Shutting down.
当我注释掉代理代码时,流可以播放,但是它会开始播放一秒钟,然后缓冲2-3秒钟,之后才恢复播放。任何解决方案都将不胜感激。
我找到了类似的问题,但它们没有得到解决:
- Android : Socket - java.net.SocketException: sendto failed: EPIPE (Broken pipe) - Media Player socket exception in Samsung Grand