From c8fd2f0c15c7bda430ff1dc3418b6c2f8793eb25 Mon Sep 17 00:00:00 2001 From: NTeditor Date: Wed, 17 Jun 2026 07:35:56 +0300 Subject: [PATCH] oppo: Reset missing battery states to UNKNOWN for UI --- .../devices/oppo/OppoHeadphonesProtocol.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/oppo/OppoHeadphonesProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/oppo/OppoHeadphonesProtocol.java index b0728acf6c..94e7e26a77 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/oppo/OppoHeadphonesProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/oppo/OppoHeadphonesProtocol.java @@ -240,6 +240,10 @@ public class OppoHeadphonesProtocol extends GBDeviceProtocol { } final int batteryLevel = payload[i + 1] & 0x7f; + if (batteryIndex == 2 && batteryLevel == 0) { + continue; + } + final BatteryState batteryState = (payload[i + 1] & 0x80) != 0 ? BatteryState.BATTERY_CHARGING : BatteryState.BATTERY_NORMAL; LOG.debug("Got battery {}: {}%, {}", batteryIndex, batteryLevel, batteryState); @@ -251,6 +255,22 @@ public class OppoHeadphonesProtocol extends GBDeviceProtocol { events.add(eventBatteryInfo); } + List processedBatteries = events.stream() + .map(event -> ((GBDeviceEventBatteryInfo) event).batteryIndex) + .toList(); + + for (int i = 0; i < 2; i++) { + if (processedBatteries.contains(i)) { + continue; + } + + final GBDeviceEventBatteryInfo eventBatteryInfo = new GBDeviceEventBatteryInfo(); + eventBatteryInfo.batteryIndex = i; + eventBatteryInfo.level = -1; + eventBatteryInfo.state = BatteryState.UNKNOWN; + events.add(eventBatteryInfo); + } + return events; }