Android Ble отложено уведомление - PullRequest
3 голосов
/ 01 апреля 2019

на Android BLE, я измеряю данные в реальном времени по уведомлению с устройства BLE.По умолчанию я получаю данные уведомления 1 раз в секунду.Однако я хочу отложить получение данных с устройств на определенный период.Ниже приведен скриншот моего кода.

  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();

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Как сказал Юссиф, датчик, скорее всего, является периферийным устройством, а приложение - центральным устройством.Данные передаются через GATT / GAP, и в зависимости от конфигурации GAP вы можете быть «узким местом» на периферийном устройстве.

эта публикация может помочь вам в дальнейшем Интервал уведомления о низком энергопотреблении Bluetooth

Программный спящий режим в приложении - это взломанное решение, но тем не менее решение:)

1 голос
/ 02 апреля 2019

Уведомления отправляются с устройства дистанционного зондирования. Поэтому, если вы хотите отложить или изменить интервал, с которого принимаются данные зондирования, вам нужно изменить код в датчике. Это правильный и надежный способ сделать это. Кроме того, вы можете запустить таймер в своем приложении для Android (например, каждые 10 секунд). Когда вы получаете уведомления с удаленного устройства, не отображайте их. Вместо этого храните их в глобальных переменных. Затем, когда истечет таймер 10 с, напечатайте эти переменные и перезапустите таймер.

Надеюсь, это поможет.

...