Notifications 不可延迟的通知

Notifications 不可延迟的通知,notifications,bluetooth-lowenergy,delay,Notifications,Bluetooth Lowenergy,Delay,在android BLE上,我通过BLE设备的通知测量实时传感数据。默认情况下,我每秒获取一次notify数据。但是,我希望在一定时间内延迟从设备获取数据。下面是我的代码截图 setNotificationCallback(mTXCharacteristic) .with(new TemperatureMeasurementDataCallback() { @Override pu

在android BLE上,我通过BLE设备的通知测量实时传感数据。默认情况下,我每秒获取一次notify数据。但是,我希望在一定时间内延迟从设备获取数据。下面是我的代码截图

  setNotificationCallback(mTXCharacteristic)
                .with(new TemperatureMeasurementDataCallback() {
                    @Override
                    public void onDataReceived(@NonNull final BluetoothDevice device, @NonNull final Data data) {
                        PrintLog.i(" "+TemperatureMeasurementParser.parse(data) + " °C");
                        //Toast.makeText(getContext(), " "+TemperatureMeasurementParser.parse(data)  + " °C", Toast.LENGTH_LONG).show();
                        //super.onDataReceived(device, data);
                        onTemperatureMeasurementReceived(device, Float.parseFloat(TemperatureMeasurementParser.parse(data)), TemperatureMeasurementCallback.UNIT_C, null, null);
                    }

                    @Override
                    public void onTemperatureMeasurementReceived(@NonNull final BluetoothDevice device,
                                                                 final float temperature, final int unit,
                                                                 @Nullable final Calendar calendar,
                                                                 @Nullable final Integer type) {
                        mCallbacks.onTemperatureMeasurementReceived(device, temperature, unit, calendar, type);
                    }

                    public void onTemperatureMeasurementReceived(@NonNull final BluetoothDevice device,
                                                                 final float temperature, final int unit,
                                                                 @Nullable final Calendar calendar,
                                                                 @Nullable final Integer type,  @Nullable final Integer batteryLevel) {
                        mCallbacks.onTemperatureMeasurementReceived(device, temperature, unit, calendar, type,batteryLevel);
                    }
                });


        requestMtu(260).enqueue();
        enableNotifications(mTXCharacteristic).enqueue();
        //sleep(10000).enqueue();

正在从遥感设备发送通知。因此,如果要延迟或更改接收传感数据的间隔,则需要修改传感器中的代码。这是正确和可靠的方法。或者,您可以在Android应用程序上启动计时器(例如,每10秒启动一次)。当您从远程设备收到通知时,不要显示它们。相反,将它们存储在全局变量中。然后,当10秒计时器过期时,打印这些变量并重新启动计时器


我希望这会有所帮助。

正如Youssif所说,传感器很可能是外围设备,而应用程序是中央设备。数据通过GATT/GAP传输,根据您的GAP配置,您可能会在外围设备中遇到“瓶颈”

这篇文章可能会进一步帮助你


应用程序上的软件睡眠是一个黑客解决方案,但仍然是一个解决方案:)

Thank@Youssif Saeed。你绝对是对的。最好的方法是修改传感器中的代码。