Android蓝牙插座

时间:2013-01-22 13:31:35

标签: android sockets bluetooth

我想做什么: 我正在开发一个应用程序,它将使用SPP从蓝牙生物识别设备获取数据。为此,我有一些命令(字节和十六进制格式)和生物识别设备制造商提供的步骤。

我的问题: 我必须按照两个步骤来获取数据,即一个接一个地发送两个命令。生物识别设备在接收第二命令时返回数据。我已成功建立与设备的连接并执行第一个命令但是当我向设备发送第二个命令时,应用程序卡住了一段时间后生物识别设备终止连接并且我收到IO异常:Socket关闭,不明白第二个命令发生了什么

我做过: 我使用了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));

}

  

否则{       tmp = device.createRfcommSocketToServiceRecord(MY_UUID);   }

1 个答案:

答案 0 :(得分:0)

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