【发布时间】:2017-01-24 16:09:05
【问题描述】:
我正在尝试构建一个充当 BLE 外围设备和 GATT 客户端的 Android 应用程序。
这些是我想要实现的步骤:
Android 设备开始宣传自己。第二台设备开始扫描,并在检测到 Android 设备后立即启动连接。
Android 设备充当 GATT 客户端并尝试连接到服务器设备。
第一步似乎工作正常,我可以做广告,而另一台设备(在我的例子中是 Bluegiga Evalboard)能够看到 Android 设备并可以建立连接。
但是我如何在 Android 设备上通知可以建立连接以调用函数device.connectGatt(context, false, gattCb) 连接到 GATT 服务器?
我也尝试过启动广告后获取远程设备。
BluetoothDevice device = bleAdapter.getRemoteDevice(remoteAddress);
device.connectGatt(context, false, gattCb);
唯一发生的事情是,从 BluetoothGattCallback 调用 onConnectionStateChange(BluetoothGatt gatt, int status, int newState) 函数只是为了通知我设备已断开连接。
我错过了什么?
【问题讨论】:
-
我知道我可能无法从描述中了解您的完整想法,但看起来 Android 设备广告本身是不必要的。如果想法是 Evalboard 是 GATT 服务器,那么它应该宣传自己。如果 Android 设备应该作为 GATT 客户端连接到服务器,那么它应该正在扫描设备。一旦 Android 设备发现 GATT 服务器设备,它就可以尝试连接到 GATT 服务器。现在您的客户端正在为自己做广告,而您的服务器正在扫描客户端,这似乎完全倒退到了应有的方式。
-
这正是本次测试的重点,我们想要反转拓扑,以确定它是否可以更节能、更可靠。
-
我也在尝试实现同样的目标。这是否可以在这 1 个设备中使用 ble 在两个 android 设备之间发送小字节,作为 gatt 和其他作为外围设备工作?
标签: android bluetooth-lowenergy