2

我正在尝试做的事情:我正在开发一个应用程序,该应用程序将使用 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); }

4

1 回答 1

0

生物识别设备有可能要求安全吗?如果没有执行蓝牙安全程序,它可能会断开连接。几个问题:您使用的是哪个 Android 版本?您知道设备的 SPP 连接要求(安全要求)吗?还分享蓝牙 logcat 跟踪以确认问题

于 2013-01-23T18:34:09.223 回答