android确认是否有服务器,android - 如何知道BLE是否表示已在Android中得到确认 - SO中文参考 - www.soinside.com...

我们正在开发两个Android应用之间的蓝牙低功耗通信。一个是外围/服务器,一个是中央/客户端。如果数据已更改,服务器将向客户端发送指示。但是,我们没有找到确保数据在客户端实际确认的方法。如果客户收到并确认数据以便在服务器端做出相应的反应,我们如何判断?

但是,通过调试和进行一些测试,似乎只有在发送通知时才会调用此方法。无法保证实际收到或确认消息。

这就是我们如何设置GattServer的特性

BluetoothGattService service = new BluetoothGattService(SERVICE_LOGIN_UUID,

BluetoothGattService.SERVICE_TYPE_PRIMARY);

// Write characteristic

BluetoothGattCharacteristic writeCharacteristic = new BluetoothGattCharacteristic(CHARACTERISTIC_LOGIN_UUID,

BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_READ| BluetoothGattCharacteristic.PROPERTY_INDICATE,

// Somehow this is not necessary, the client can still enable notifications

// | BluetoothGattCharacteristic.PROPERTY_NOTIFY,

BluetoothGattCharacteristic.PERMISSION_WRITE | BluetoothGattCharacteristic.PERMISSION_READ);

service.addCharacteristic(writeCharacteristic);

mGattServer.addService(service);

然后我们通过调用此通知客户端

mHandler.post(() -> {

BluetoothGattService service = mGattServer.getService(SERVICE_LOGIN_UUID);

BluetoothGattCharacteristic characteristic = service.getCharacteristic(uuid);

log("Notifying characteristic " + characteristic.getUuid().toString()

+ ", new value: " + StringUtils.byteArrayInHexFormat(value));

characteristic.setValue(value);

boolean confirm = BluetoothUtils.requiresConfirmation(characteristic);

for(BluetoothDevice device : mDevices) {

mGattServer.notifyCharacteristicChanged(device, characteristic, confirm);

}

});

*请不要忘记这里的循环

这将导致onNotificationSent被调用,但无法知道它是否被确认。

如果您需要其他代码部分,请告诉我。

谢谢大家,很多问候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值