Android ble中客户端特征配置描述符中的启用\指示\值和启用\通知\值是什么?
我一直在开发一个应用程序,从另一个可编程设备读取和写入数据。从应用程序的角度来看,我没有任何问题。我需要澄清的只是一些概念上的疑问。因此:Android ble中客户端特征配置描述符中的启用\指示\值和启用\通知\值是什么?,android,bluetooth-lowenergy,android-bluetooth,android-ble,Android,Bluetooth Lowenergy,Android Bluetooth,Android Ble,我一直在开发一个应用程序,从另一个可编程设备读取和写入数据。从应用程序的角度来看,我没有任何问题。我需要澄清的只是一些概念上的疑问。因此: 为什么我们需要cccd来启用通知 一旦传递了ENABLE_指示值,是否会启用通知 在外围设备中 启用\u指示\u值和 在两者执行相同的任务(即发送)时启用\u通知\u值 向中央设备发送连续数据 如果客户端应启用通知/指示,则需要配置服务器。否则它不会发送任何东西 否。16位描述符值是一个位字段。目前只定义了两个位:通知和指示。您可以设置这两个位,然后您应该得
1.为什么我们需要CCCD来启用通知 首先setCharacteristicNotification()-启用/禁用本地设备以接收来自外围设备的通知 CCCD-客户端配置特征描述符 “CCCD的使用是由GATT客户机控制GATT服务器可以向其发送何种数据包”——这意味着允许外围设备发送数据 2.一旦通过启用指示值,是否在外围设备中启用通知 否。对于每个指示,您必须发送确认函,说明这是我需要的数据 3.启用\指示\值和启用\通知\值之间的区别是什么 如果特征值有任何变化,它们都会发出通知 启用通知值->如果有任何更改,外围设备将发送,这意味着这可以用于常规通知
启用\u指示\u值->外围设备将发送如果有任何更改,将在下一个连接间隔(一个连接间隔只允许一个指示)中出现应用程序级确认(来自ble堆栈),则只有外围设备可以发送新值。这就是为什么我们不能使用“启用指示”值来发送常规通知。“现在应用程序必须发送确认”这不是真的对不起!,“现在应用程序必须发送ack,但它将在下一个连接间隔内发送”在Android中,应用程序不会发送任何指示确认(ack),这是由BLE堆栈完成的。对于通知,BLE堆栈根本不发送任何ack(只有数据包本身的链路层ack,但这是另一回事);是的,但是我们只能为一个连接间隔获得一个值,这使得它比其他连接间隔慢。