【发布时间】:2020-12-30 17:50:19
【问题描述】:
我有 2 台设备:
- 一个是广告(在 android 11 上运行的服务器应用)
- 一个正在发现(在 android 4.4.2 上运行的客户端应用程序)。
两者都有最新版本的 Google Play 服务。
连接时,客户端应用程序正在向服务器应用程序发送一些字节;根据这些,它会发回字节或文件。它适用于我拥有的所有客户端设备,除了 Galaxy Tab 3,我不知道为什么。发送字节有效,但不发送文件(文件大约为 25Mo!我尝试了 5Kb,结果相同:有效负载失败)。失败时,客户端与服务器断开连接,然后重新连接到它,只是再次失败。经过一些尝试后,经常会出现一个弹出窗口,提示播放服务已停止。
有人知道为什么会在这个特定设备上发生这种情况吗?
我有一些来自我的服务器应用程序的日志:
? I/NearbyConnections: EndpointManager failed the next Read read/write for endpoint ZPYv over its ENCRYPTED_BLUETOOTH EndpointChannel. [CONTEXT service_id=54 ]
java.io.IOException: bt socket closed, read return: -1
at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:550)
at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:88)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:248)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:288)
at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
at java.io.DataInputStream.readFully(DataInputStream.java:198)
at java.io.DataInputStream.readInt(DataInputStream.java:389)
at agmx.e(:com.google.android.gms@203315046@20.33.15 (150400-330018294):1)
at agoz.a(:com.google.android.gms@203315046@20.33.15 (150400-330018294):1)
at agow.run(:com.google.android.gms@203315046@20.33.15 (150400-330018294):4)
at agiy.run(Unknown Source:0)
at qzr.b(:com.google.android.gms@203315046@20.33.15 (150400-330018294):12)
at qzr.run(:com.google.android.gms@203315046@20.33.15 (150400-330018294):7)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at rfq.run(:com.google.android.gms@203315046@20.33.15 (150400-330018294):0)
at java.lang.Thread.run(Thread.java:923)
? I/NearbyConnections: EndpointManager quit overall Read loop for endpoint ZPYv because the currently registered ENCRYPTED_BLUETOOTH EndpointChannel is in a failed state. [CONTEXT service_id=54 ]
? I/NearbyConnections: Failed to close write stream of ENCRYPTED_BLUETOOTH EndpointChannel BluetoothClassicSocket:C4:62:EA:38:FD:08: socket closed [CONTEXT service_id=54 ]
? I/NearbyConnections: EndpointChannelManager unregistered endpoint ZPYv [CONTEXT service_id=54 ]
? I/NearbyConnections: ClientProxy(80700159) ignoring onConnectionResult(ZPYv, ERROR) because this client has no pending connections to the endpoint [CONTEXT service_id=54 ]
? I/NearbyMediums: Closed Wifi Direct channel. [CONTEXT service_id=54 ]
? E/NearbyMediums: There's no Direct hotspot to stop when the Wi-Fi Direct channel disconnected. [CONTEXT service_id=54 ]
我的客户端应用程序上的错误报告对话框中的异常行(对话框并非每次都显示,所以我不知道这是否是附近失败的原因):
java.lang.IllegalArgumentException: Requested flags 0x43, but only 0x3 are allowed
【问题讨论】:
-
刚刚发现我有一些日志,添加它们,因为它们没有帮助:)
-
“播放服务已停止”意味着我们(附近的)端发生了崩溃。你能过滤错误(adb logcat *:e)并附加它吗?崩溃通常具有日志标签“AndroidRuntime”。
-
你好@Xlythe!可悲的是,我的 USB 电缆刚刚死了,我要到下周才能买到一根。但我仍然有一些来自错误报告对话框的数据。异常类是来自 android.os.Parcel 类的 IllegalArgumentException。源方法似乎是 readException(第 1469 行)。堆栈跟踪说:
Requested flags 0x43, but only 0x3 are allowed -
似乎是 kitkat (api 19) 上的一个已知错误。不幸的是,我正在处理的应用程序至少针对 api 16。顺便说一句,“播放服务已停止”对话框并非每次都显示。这是预期的行为吗?
-
我已经提交了我们这边的修复程序。推出大约需要 1 个月。 “播放服务已停止”并非每次都显示的原因是因为我们有一些内部逻辑试图捕捉崩溃并恢复,但是有一个计数器,它不会无限期地恢复。如果您查找“DeviceDoctor”,您可能会看到其中的日志。
标签: java android file galaxy google-nearby