我正在尝试做的事情:我正在开发一个应用程序,该应用程序将使用 SPP 使用蓝牙从生物识别设备中获取数据。为此,我有一些命令(字节和十六进制格式)和生物识别设备制造商提供的步骤。
我的问题:我必须遵循两个步骤来获取数据,即一个接一个地发送两个命令。生物识别设备在接收到第二个命令时返回数据。我已成功建立与设备的连接并执行第一个命令,但是当我向设备发送第二个命令时,应用程序卡住,一段时间后生物识别设备终止连接,我收到 IO 异常:套接字关闭,不明白第二个命令发生了什么.
我已经完成了:我使用了 Android SDK Samples 中提供的蓝牙聊天示例中的 BluetoothChatService.class,并根据我的要求修改了ConnectThread线程的 Run 函数,即我在这个函数中发送命令。并使用“00001101-0000-1000-8000-00805F9B34FB”UUID。为了连接到套接字,我尝试了以下代码:
if (Build.VERSION.SDK_INT > 9) {
tmp = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);
}
else {
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
}
和
Method m = device.getClass().getMethod("createRfcommSocket",
new Class[] { int.class });
tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
和
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
有谁知道我错在哪里?
先感谢您。但其中之一可以解决我的问题。
编辑 我已经解决了这个问题。这是我正在建立套接字连接的方法
if (Build.VERSION.SDK_INT < 10){
Method m = device.getClass().getMethod("createRfcommSocket",new Class[] { int.class });
tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
}
else{ tmp = device.createRfcommSocketToServiceRecord(MY_UUID); }