- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们最近收到报告称,我们的 Android 应用程序无法在 Samsung Galaxy S4 上播放音频。该应用在其他设备上运行良好。
音频是使用 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 秒,然后再继续。
任何解决方案都会被广泛接受。
我也发现了类似的问题,但是没有解决:
最佳答案
我终于弄清楚了导致此问题的原因。正如预期的那样,媒体播放器正在执行范围请求以尝试查找 id3 信息。在其他手机上,只需将 header 状态行设置为 HTTP/1.0 206 OK
即可阻止媒体播放器执行此类范围请求。然而,出于某种奇怪的原因,这在 S4 上并非如此(感谢三星!)。
因此,为了修复它,您只需要处理这些范围请求。在我的例子中,我只调用了一次 socket.accept()
。当 isRunning
在我的 run()
函数中为真时,我将其更改为在循环中执行。这样,当一个新请求完成时,它会被正确处理。我的代码的精简版如下所示...
public void run() {
while (isRunning) {
client = socket.accept();
HttpResponse cloudResponse = startCloudRequest();
sendDataToMediaPlayer(cloudResponse);
}
}
希望这对您有所帮助。
关于Samsung Galaxy S4 (SGS4) 上的 Android 套接字问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16524051/
我刚刚按照教程创建了一个新的小部件。我创建了一个包含所有文件的 zip,并将其重命名为 HelloWorld.wgt 而不是 HelloWorld.zip。我通过数据线将它发送到我的三星 star/c
Samsung Galaxy Apps 商店不接受我提交的应用。 有一个类别部分,其中有两个用于选择类别的字段,我已将两者都设置为主要类别,但是当我提交它时,它指出我仍然需要为我的应用程序选择一个类别
我正在寻找在我的 Android 应用程序中使用 Samsung Comic Fun Filter 的可能性。有可能这样做吗?或者这是三星应用程序独有的? 最佳答案 是的。有可能的。三星为此提供了一个
三星 Galaxy S6 中有一个 S 健康应用程序,可以测量心率、SpO2、压力和其他值。看来我可以为此购买额外的应用程序。这个S Health是三星独有的吗?当我在线搜索 Google Fit A
关于我的主题问题我有一些关于 PNACL 的基本问题 是否所有三星 SmartTV 都支持 PNACL? 2.如果我使用 pepper 31,我的应用程序可以在旧电视上运行吗? 现在主要的问题 我已经
经过一番研究,我得出结论,这个应用程序的 ID 为 org.volt.apps , 但通过 tizen.application.launch 启动它或 tizen.application.launch
我已经实现了一个 android 应用程序来在网络摄像头之间切换。我使用此代码 Android ICS and MJPEG using AsyncTask .它工作得很好。但是现在的问题。在对 Sam
说出于某种原因,也许是某种安全限制,您不能“不”运行与三星云服务器等通信的三星“S Health”应用程序。但是您确实想访问三星的历史记录/日志“Gear S3 watch ”,这有可能吗?或者三星是
除其他外,我想以编程方式获取三星设备上保修位的状态。很像 Odin 模式下显示的信息。 我知道该位不适合轮询,但我想知道是否有任何方法可以在无需创建容器或在证明期间获取它。 很像 GP 上的 KNOX
如何获取使用 HTML、CSS 和 JavaScript 编写的 Samsung SmartTV 应用程序的当前时间? 问题出在 Javascript Date目的。当我打电话时new Date()在
我们一直在试验三星智能电视应用程序。 最近我们构建了一个原型(prototype)应用来试验某项功能,但我们正在努力让它在真正的电视上运行。 即使它在三星模拟器上运行完美,但在真正的电视上几乎没有运气
已开发应用程序并部署到电视上。现在我想要单宽行为(部分覆盖底层输入、 channel 上的屏幕),但我无法这样做。这是我所做的: a) 放body, html {background-color:tr
我才刚刚开始三星智能电视的开发,到目前为止,我的第一步是一个巨大的失败。 我正在运行 Linux,因为我已经为 Android 开发安装和配置了 Eclipse,所以我没有成功安装和运行 Smart
我已经下载了最新的 sdk,解压缩到桌面并尝试运行我的第一个 helloworld 应用程序,但在 eclipse 上没有任何反应。没有任何建筑物,目前没有任何进程,没有任何错误等。当我点击“运行三星
我将 Android 应用程序分发到 Google Play 商店。 我从我的用户那里收到“此商品与您的设备 samsung advance 不兼容”。 手机是三星Advance。 显现:
我真的已经尽力了,但我就是找不到解决这个问题的方法。我为 Android 设备编写了一个 Soundboard,其中每个声音及其按钮图像都是动态加载的。这是我的代码中的关键段落: private vo
我正在为三星智能电视创建一个应用程序。在我的应用程序中,我需要获取智能电视的 IP 地址。有谁知道怎么弄吗? 最佳答案 你需要使用 SEF NETWORK 来做到这一点,确保你在 index.html
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我安装了 Hyperterminal 并使用了我的 samsung galaxy s3 并使用 usb 数据线将它连接到我的笔记本电脑。我安装了驱动程序,计算机将 s3 检测为调制解调器。它在 sup
我已经为 Android 编写了一个应用程序。主要部分是它通过蓝牙进行通信。我有四个设备: 1. 三星 Galaxy S2 2. 三星 Galaxy Gio 3.Netsurfer touch(一款非
我是一名优秀的程序员,十分优秀!