【问题标题】:Bluetooth connection refused with secure rfcomm socket (works with insecure)使用安全 rfcomm 套接字拒绝蓝牙连接(适用于不安全)
【发布时间】:2013-12-02 04:36:57
【问题描述】:

现在我正在创建一个通过蓝牙与一些医疗设备通信的安卓应用程序,以便在智能手机上显示检查结果,我遇到了这个奇怪的问题:

createRfcommSocketToServiceRecord(uuid) 可以工作并将手机连接到 android 2.1 - 3.x(Galaxy SI、Galaxy SII 和其他几款平板电脑)上的设备,但它不能工作在 android 4.x(Galaxy SIII、Galaxy Trend)上。我收到连接被拒绝错误。 但是,不安全连接 createInsecureRfcommSocketToServiceRecord(uuid) 对于所有这些版本都可以正常工作,当然 2.1 除外,因为在 API 级别 10 中引入了不安全连接。

有人知道为什么会这样吗?是硬件/驱动程序相关还是我做错了什么。是的,我必须支持 android 2.1。

【问题讨论】:

  • 您好我正在寻找android蓝牙设备和RFID蓝牙设备之间的不安全连接,所以如果你有请分享源代码或指导我如何做。

标签: android sockets bluetooth


【解决方案1】:

Google 在 Android 4.2 中用不同的版本替换了 Android 的蓝牙代码。这删除了对 L2CAP 套接字和其他功能的支持。这可能是您看到差异的原因。我在所有版本的 Android(2.3 及更高版本)上使用 createInsurecureRfcommSocket() ,它似乎工作正常。我没有根据服务记录进行连接,而是在配对设备列表中搜索特定的蓝牙设备名称,然后在通道 1 上连接到该地址。

这是代码的简化视图(未显示 try/catch):

 BluetoothDevice btDevice = mBluetoothAdapter.getRemoteDevice(btTargetAddress);
 m = btDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[] { int.class });
 mSocket = (BluetoothSocket)m.invoke(btDevice, 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多