2013-01-22 139 views
2

我在做什么: 我正在研究一个应用程序,该应用程序将使用SPP使用蓝牙从生物识别设备获取数据。为此,我有一些命令(以字节和HEX格式)和生物识别设备制造商提供的步骤。Android蓝牙插座

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

我做: 我已经在Android SDK中提供的样品例如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); 

任何一个知道我在哪里错了?

预先感谢您。 但其中一个可以解决我的问题。

编辑 我已经解决了这个问题。这是方法我是谁建立socket连接

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); }

回答

0

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

+1

我有检查提供的文件,它没有指定和安全要求。我正在测试这个HTC欲望,HTC欲望高清和三星Galaxy Tab 10.1。 –