feat(app-glasses): панель статуса — время + заряд (цвет по статусу)

Поверх видео (GL-оверлей в EglVideoRenderer: bitmap-текстура, правый
верхний угол, обе поверхности) и композ-панель на экране соединения.
Цвета (из удачной панели pair-view StatusComponent): CHARGING/FULL —
зелёный, DISCHARGING — белый, NOT_CHARGING — красный.
Данные: StatusPanelProvider (sticky ACTION_BATTERY_CHANGED + тик 1с,
HH:mm). Тесты 4 (chargeColorArgb). Железо: «00:02 94%» + зелёный
квадрат (очки на зарядке), скрин подтверждён.
This commit is contained in:
Hermes Agent
2026-08-20 00:03:23 +03:00
parent 2b6fdb7148
commit 3f858c4a1a
5 changed files with 392 additions and 15 deletions
@@ -0,0 +1,52 @@
package pw.binom.viewmate.glasses.status
import android.os.BatteryManager
import kotlin.test.Test
import kotlin.test.assertEquals
class StatusPanelTest {
@Test
fun chargingIsGreen() {
val color = chargeColorArgb(
plugged = true,
status = BatteryManager.BATTERY_STATUS_CHARGING,
)
assertEquals(CHARGE_COLOR_CHARGING, color)
}
@Test
fun notPluggedIsWhiteRegardlessOfStatus() {
for (status in intArrayOf(
BatteryManager.BATTERY_STATUS_CHARGING,
BatteryManager.BATTERY_STATUS_DISCHARGING,
BatteryManager.BATTERY_STATUS_NOT_CHARGING,
BatteryManager.BATTERY_STATUS_FULL,
BatteryManager.BATTERY_STATUS_UNKNOWN,
)) {
assertEquals(
CHARGE_COLOR_DISCHARGING,
chargeColorArgb(plugged = false, status = status),
"status=$status, plugged=false → белый",
)
}
}
@Test
fun pluggedNotChargingIsRed() {
val color = chargeColorArgb(
plugged = true,
status = BatteryManager.BATTERY_STATUS_NOT_CHARGING,
)
assertEquals(CHARGE_COLOR_PLUGGED_NOT_CHARGING, color)
}
@Test
fun pluggedFullIsGreen() {
val color = chargeColorArgb(
plugged = true,
status = BatteryManager.BATTERY_STATUS_FULL,
)
assertEquals(CHARGE_COLOR_CHARGING, color)
}
}