gpt4 book ai didi

bluetooth-lowenergy - 在Android-L预览中实现BLE通知的任何方法

转载 作者:行者123 更新时间:2023-12-04 00:12:47 26 4
gpt4 key购买 nike

这个问题与Android notificatinos无关,但与BLE通知有关(标题可能暗示)

我在Android-L上有基本的BLE外设模式

有什么方法可以在Android-L预览中实现BLE通知。我可以做一些类似以下的事情,使一个特征对象能够发出通知,但是要试听

BluetoothGattCharacteristic firstServiceChar = new BluetoothGattCharacteristic(
UUID.fromString(serviceOneCharUuid),
BluetoothGattCharacteristic.PROPERTY_NOTIFY, BluetoothGattCharacteristic.PERMISSION_READ );


但是在iOS上的LightBlue应用程序中,我无法订阅此功能。显然,订阅了char时,没有API可以用来响应调用(就像iOS中一样)

如果您已在Android-L上成功启用BLE通知,请共享您的代码

最佳答案

除了OP所做的之外:

BluetoothGattCharacteristic firstServiceChar = new BluetoothGattCharacteristic(UUID.fromString(serviceOneCharUuid), BluetoothGattCharacteristic.PROPERTY_NOTIFY, BluetoothGattCharacteristic.PERMISSION_READ )


接下来的事情是添加客户端特征配置描述符(UUID是使用蓝牙基本UUID的16位0x2902的128位版本),以便所连接的设备可以告诉您它想要通知(或指示),然后添加该描述符符合您的特征:

BluetoothGattDescriptor gD = new BluetoothGattDescriptor(UUID.fromString("00002902-0000-1000-8000-00805F9B34FB"), BluetoothGattDescriptor.PERMISSION_WRITE | BluetoothGattDescriptor.PERMISSION_READ);

firstServiceChar.addDescriptor(gD);


该UUID来自蓝牙规范。显然,设备通过更新此描述符来订阅通知,因此您必须通过覆盖onDescriptorWriteRequest在BluetoothGattServerCallback中进行处理:

@Override
public void onDescriptorWriteRequest (BluetoothDevice device, int requestId, BluetoothGattDescriptor descriptor, boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) {

btClient = device; // perhaps add to some kind of collection of devices to update?

// now tell the connected device that this was all successfull
btGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, offset, value);

}


现在更新您的值并通知连接者:

firstServiceChar.setValue("HI");
btGattServer.notifyCharacteristicChanged(btClient, firstServiceChar, false);


希望这段快速而肮脏的代码会有所帮助,因为我首先使用的是OP的代码,甚至可以使基本的外围设备模式正常工作:)

关于bluetooth-lowenergy - 在Android-L预览中实现BLE通知的任何方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com