我正在尝试做的是:
我正在开发一个应用程序,该应用程序将通过使用SPP的蓝牙从生物识别设备中获取数据。为此,我有一些命令(字节和十六进制格式)以及生物识别设备制造商提供的步骤。
我的问题 :
我必须遵循2个步骤来获取数据,即一个接一个地发送两个命令。当收到第二条命令时,生物识别设备将返回数据。我已经成功建立了与设备的连接并执行了第一条命令,但是当我向设备发送第二条命令时,应用卡住了,一段时间后生物识别设备终止了连接,并且我收到了IO异常:套接字已关闭,不了解第二条命令正在发生什么。
我已经做好了:
我已经使用了Android SDK Samples中提供的Bluetooth Chat示例中的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); }
最佳答案
生物识别设备是否可能要求安全性?
如果未执行蓝牙安全性程序,则可能会断开连接。
几个问题:
您使用的是哪个Android版本?
您知道设备的SPP连接要求(安全要求)吗?
还共享蓝牙logcat跟踪以确认问题
关于android - Android蓝牙 socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459757/