在特定设备上使用 Google 附近连接发送文件时出现问题
Problem sending file using Google Nearby Connections on specific device
我有 2 台设备:
- 一个正在做广告(服务器应用 运行 在 android 11)
- 一个正在发现(android 4.4.2 上的客户端应用 运行)。
两者都有最新版本的 Google Play 服务。
连接时,客户端应用程序正在向服务器应用程序发送一些字节;根据这些,它将发回字节或文件。它适用于我拥有的所有客户端设备,除了 Galaxy Tab 3,我不知道为什么。发送字节有效,但不发送文件(文件大约 25Mo!我试过 5Kb,结果相同:有效负载失败)。失败时,客户端断开与服务器的连接,然后重新连接到它,只会再次失败。经过一些尝试后,经常会出现一个弹出窗口,提示 Play 服务已停止。
有谁知道为什么会在这个特定设备上发生这种情况?
我的服务器应用程序有一些日志:
? 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 ]
以及我的客户端应用程序错误报告对话框中的异常行(对话框不会每次都显示,所以我不知道这是否是 Nearby 失败的原因):
java.lang.IllegalArgumentException: Requested flags 0x43, but only 0x3 are allowed
这是 Nearby Connection 代码中的错误!它是
的一个实例
我刚刚提交了一个修复程序,但大约需要一个月的时间才能将其部署到设备上。
免责声明:我在附近工作
我有 2 台设备:
- 一个正在做广告(服务器应用 运行 在 android 11)
- 一个正在发现(android 4.4.2 上的客户端应用 运行)。
两者都有最新版本的 Google Play 服务。
连接时,客户端应用程序正在向服务器应用程序发送一些字节;根据这些,它将发回字节或文件。它适用于我拥有的所有客户端设备,除了 Galaxy Tab 3,我不知道为什么。发送字节有效,但不发送文件(文件大约 25Mo!我试过 5Kb,结果相同:有效负载失败)。失败时,客户端断开与服务器的连接,然后重新连接到它,只会再次失败。经过一些尝试后,经常会出现一个弹出窗口,提示 Play 服务已停止。
有谁知道为什么会在这个特定设备上发生这种情况?
我的服务器应用程序有一些日志:
? 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 ]
以及我的客户端应用程序错误报告对话框中的异常行(对话框不会每次都显示,所以我不知道这是否是 Nearby 失败的原因):
java.lang.IllegalArgumentException: Requested flags 0x43, but only 0x3 are allowed
这是 Nearby Connection 代码中的错误!它是
我刚刚提交了一个修复程序,但大约需要一个月的时间才能将其部署到设备上。
免责声明:我在附近工作