蓝牙连接错误:“jnius.jnius.JavaException:发生 JVM 异常:读取失败,套接字可能关闭或超时,读取 ret:-1”
Posted
技术标签:
【中文标题】蓝牙连接错误:“jnius.jnius.JavaException:发生 JVM 异常:读取失败,套接字可能关闭或超时,读取 ret:-1”【英文标题】:Bluetooth connection error: "jnius.jnius.JavaException: JVM exception occurred: read failed, socket might closed or timeout, read ret: -1" 【发布时间】:2021-11-03 02:56:54 【问题描述】:我正在使用 python 开发一个 android 应用程序。我想使用 pyjnius 库通过蓝牙将此应用程序与我计算机上的服务器连接。我正在使用 rfcomm-server.py 脚本作为来自此链接的服务器:https://github.com/pybluez/pybluez/blob/master/examples/simple/rfcomm-server.py
客户端脚本:
from jnius import autoclass
server_mac_address = '94:08:53:52:B5:98'
uuid = "00001101-0000-1000-8000-00805F9B34FB"
BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
BluetoothDevice = autoclass('android.bluetooth.BluetoothDevice')
BluetoothSocket = autoclass('android.bluetooth.BluetoothSocket')
UUID = autoclass('java.util.UUID')
def get_socket_stream(name):
adapter = BluetoothAdapter.getDefaultAdapter()
device = adapter.getRemoteDevice(server_mac_address)
socket = device.createRfcommSocketToServiceRecord(UUID.fromString(uuid))
adapter.cancelDiscovery()
socket.connect()
recv_stream = socket.getInputStream()
send_stream = socket.getOutputStream()
return recv_stream, send_stream
if __name__ == '__main__':
recv_stream, send_stream = get_socket_stream('linvor')
send_stream.write('hello\n')
send_stream.flush()
当我运行此代码时,我收到以下错误:“jnius.jnius.JavaException:发生 JVM 异常:读取失败,套接字可能关闭或超时,在套接字中读取 ret:-1”。连接()线。我通过蓝牙菜单将手机连接到电脑,所以我确保我的设备已与手机配对。 有人可以帮我吗?
我针对类似问题建立了不同的建议解决方案。比如这个:Bluetooth Connection failed "java.io.IOException: read failed, socket might closed or timeout, read ret: -1"。
我也尝试在python中实现以下java代码,但没有成功:
socket = (BluetoothSocket) device.getClass().getMethod("createRfcommSocket", new Class[] int.class).invoke(device,1);
socket.connect();
我在堆栈溢出上找到的所有解决方案都是用 java 实现的。所以这就是问题所在,因为我不懂 java :) 所以我需要在 python 中实现。
我还尝试使用不同的函数而不是 createRfcommSocketToServiceRecord() 来创建套接字。比如 createInsecureRfcommSocketToServiceRecord() 和 createRfcommSocket(),但是不管用。
【问题讨论】:
【参考方案1】:也许你不应该使用 pyjnius?如果你想在 Android 上使用某些东西,你可以使用适用于 Android 的 python 项目。 P4A 已经包含 pyjnius 和 Kivy,并具有包含其他 Python 模块和从您的应用程序创建 APK 的脚本。 python-for-android还提供了VirtualBox虚拟机,简化了Windows用户的工作流程。
【讨论】:
请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。以上是关于蓝牙连接错误:“jnius.jnius.JavaException:发生 JVM 异常:读取失败,套接字可能关闭或超时,读取 ret:-1”的主要内容,如果未能解决你的问题,请参考以下文章
蓝牙连接错误:“jnius.jnius.JavaException:发生 JVM 异常:读取失败,套接字可能关闭或超时,读取 ret:-1”