2

我正在使用摩托罗拉随 RAZR 提供的 BT 4.0 API。在他们的一份文档中,它声明在连接和使用他们的框架之前使用 Android API 进行配对。根据他们的指示,我一直在与 OS 蓝牙设置应用程序配对,但它从不提示我输入密钥。它会配对但似乎不会结合,这对我来说很重要。

我的问题是,当他们说“使用 Android API”时,这是指简单地使用 OS 蓝牙实用程序进行配对(就像我一直在做的那样),或者有什么方法可以在我的应用程序中使用代码来完成。他们引用了“createBond()”函数,据我所知,它不是一个可访问的函数(至少在没有一些怪异的库或反射的情况下不是这样)。

非常感谢任何建议,特别是任何成功使用 API 的人,如果他们能说明他们的过程。在这一点上,我只是想弄清楚:)

4

3 回答 3

5

劳埃德,

您是对的,请按照您发布的链接中的说明进行操作。

在编码之外,当他们说使用标准的 android api 进行“非 le”操作时,他们的意思是继续配对 ble 设备,就像在 android 设置 -> 无线和网络 -> 蓝牙 - 中的任何蓝牙经典设备一样 - > 扫描设备。

如果您使用的设备是与motorola le 兼容的设备,则ble 设备将配对但未连接。

现在,在代码中,您可以通过相同的方法检测此配对设备

BluetoothAdapter.getDefaultAdapter().getBondedDevices()

要仔细检查您的 Android 手机是否与 LE 兼容,请运行以下代码:

 public static boolean checkBLESupport() {
        boolean deviceSupportsLE;

    try {
        @SuppressWarnings({ "unused", "rawtypes" })
        Class object = Class.forName("android.server.BluetoothGattService");
        deviceSupportsLE = true; 
    } catch (Exception e) {
        deviceSupportsLE = false; 
    }

    return deviceSupportsLE;
}

当您循环连接绑定的设备时,请仔细检查您配对的蓝牙设备是否为 LE。使用此代码检查设备。

 if (device.getBluetoothClass() == null) {
    Log.i(TAG, "This device is BLE compatible");
        b = true;
} else {
    Log.i(TAG, "This device is not BLE");
        b = false;
}

现在要建立从您的 LE 兼容手机到您的 LE 兼容蓝牙设备的连接,请按照您发布的链接下的 Gatt 服务说明进行操作。http://developer.motorola.com/docs/bluetooth-low-energy-api/

请注意,在此示例中,它连接到蓝牙低能量心率监测器。

如果您不尝试使用 LE 心率配置文件连接到心率监测器,这里是另一个摩托罗拉文档的链接,其中详细介绍了创建您自己的 LE 配置文件以与 GATT 框架一起使用。http://developer.motorola.com/docs/bluetooth-low-energy-gatt-framework-api/

如果这些文档中的任何地方的说明都不够清楚,摩托罗拉提供了使用这些文档中的框架的示例 android 应用程序。

于 2012-07-06T17:42:08.837 回答
1

我猜摩托罗拉堆栈有BLE支持。但我觉得它不与需要绑定的设备配对,尽管它确实适用于一些传感器。我尝试使用需要粘合的接近传感器。尽管设备是通过 Razr 发现的,但它永远不会与 S3 配对。

这里有一个有用的视频。

于 2012-08-15T08:32:27.450 回答
0

比赛迟到了,但可以确认——

如果您的 BLE 外设需要绑定,Moto X - 以及其他一些较旧的摩托罗拉设备 - 必须先通过蓝牙设置配对,然后才能通过 Android GATT 接口进行编程连接。

如果您通过 createBond 方法或读取加密特征进行绑定,您的连接通常会在 60 秒内断开,尽管 DDMS 日志显示可能建立了良好的绑定。

于 2016-12-28T20:02:39.770 回答