Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android支持同时通知和指示_Android_Bluetooth_Bluetooth Lowenergy - Fatal编程技术网

Android支持同时通知和指示

Android支持同时通知和指示,android,bluetooth,bluetooth-lowenergy,Android,Bluetooth,Bluetooth Lowenergy,因此,我的应用程序使用蓝牙低能量,并且需要使用通知和指示。但是,我无法启用这些指示。是否可以同时启用通知和指示?如果是,下面的方法是否有效 gattInstance.setCharacteristicNotification(charac, true); BluetoothGattDescriptor desc = charac.getDescriptor(UUID_CCCD); desc.setValue(BluetoothGattDescriptor.ENABLE_

因此,我的应用程序使用蓝牙低能量,并且需要使用通知和指示。但是,我无法启用这些指示。是否可以同时启用通知和指示?如果是,下面的方法是否有效

    gattInstance.setCharacteristicNotification(charac, true);
    BluetoothGattDescriptor desc =  charac.getDescriptor(UUID_CCCD);
    desc.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
    desc.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
    gattInstance.writeDescriptor(desc);

调用
desc.setValue
时,实际上覆盖了以前的值。因此,在这里,您只在启用了
指示的情况下编写CCCD


根据核心规范v4.2,§3.G.3.3.3,CCCD是一个位字段,因此您应该能够写入16位小端值0x0003(BluetoothGattDescriptor中似乎没有为此定义常量)。

当您调用
desc.setValue
时,实际上覆盖了以前的值。因此,在这里,您只在启用了
指示的情况下编写CCCD


根据核心规范v4.2,§3.G.3.3.3,CCCD是一个位字段,因此您应该能够写入16位小尾端值0x0003(BluetoothGattDescriptor中似乎没有为此定义常量)。

启用通知值={0x01,0x00}
启用指示值={0x02,0x00}
。因此,如果我使用
enableNOTIFandIND={0x03,0x00}
它可能会工作。是的,这可能会工作。但它是否真的同时发送指示和通知也取决于外围设备。为什么要同时启用这两个选项?似乎你可以用更好的方式解决你想要实现的任何事情。指示也是毫无意义的,因为如果你想要确认,你不能真正确定应用程序是否处理了它;只是堆栈得到了它(可能应用程序没有响应或崩溃,Android仍将发送回确认)。@AmiguelS,是的,这就是值。@Emil,我同意,我也没有看到用例。我很确定大多数堆栈实现不会正确处理这个问题,但这不是实际问题…@Emil我的应用程序要求我补偿数据包的传输时间,我想使用相同的特性来发送数据,并使用其中一条消息的ACK来估计传输时间。其余数据将使用通知发送。似乎我最好创建一个专用的“ping”特性。
ENABLE_NOTIFICATION_VALUE={0x01,0x00}
ENABLE_INDICATION_VALUE={0x02,0x00}
。因此,如果我使用
enableNOTIFandIND={0x03,0x00}
它可能会工作。是的,这可能会工作。但它是否真的同时发送指示和通知也取决于外围设备。为什么要同时启用这两个选项?似乎你可以用更好的方式解决你想要实现的任何事情。指示也是毫无意义的,因为如果你想要确认,你不能真正确定应用程序是否处理了它;只是堆栈得到了它(可能应用程序没有响应或崩溃,Android仍将发送回确认)。@AmiguelS,是的,这就是值。@Emil,我同意,我也没有看到用例。我很确定大多数堆栈实现不会正确处理这个问题,但这不是实际问题…@Emil我的应用程序要求我补偿数据包的传输时间,我想使用相同的特性来发送数据,并使用其中一条消息的ACK来估计传输时间。其余数据将使用通知发送。看来,我最好还是创建一个专用的“ping”特性。