android - Android蓝牙 socket

标签 android sockets bluetooth

我正在尝试做的是:
我正在开发一个应用程序,该应用程序将通过使用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/

相关文章:

android - MaterialCardView 崩溃, Material :1. 1.0

ios - 在 iOS 中获取低功耗蓝牙外设的 MAC 地址

PHP socket_listen() 不工作

c++ - 有没有办法使用winapi打开蓝牙?

c# - 蓝牙扫描C#

Android - 创建图像和图标

android - 制作线程循环的最佳方法?

android - 如何将滚动事件传递给父recyclerview

sockets - 从应用程序重置 TCP 套接字连接

c++ - 套接字 API :Socket operation on non-socket