Files
view-mate/TASK-red-dot-recording.md

3.5 KiB
Raw Permalink Blame History

TASK-red-dot-recording.md — индикатор записи микрофона на очках

Контекст

Пользователь просит: когда на очках идёт запись микрофона (режим «слушаю», listening=true), показывать в углу экрана красный кружок (индикатор записи, как у камер/диктофонов). Только очки (app-glasses), только UI. Через опен-код, как всегда.

Где это живёт

  • app-glasses/src/main/kotlin/pw/binom/viewmate/glasses/ui/AssistantOverlay.kt
  • AssistantOverlay() собирает state (listening/thinking/sttText/assistantText), затем overlayBox(app, state, chatHistory, scrollState).
  • overlayBox() внутри Binocular(scale=false) рисует Box с чёрным затемнением Color.Black.copy(alpha = 0.72f) и в нём AssistantOverlayContent(...).
  • Binocular рендерит контент дважды (левый/правый глаз) — кружок появится в каждом глазу, это правильно (в каждой половине экрана свой индикатор).

Правка

В overlayBox(): внутри внешнего Box (тот, что с .background(Color.Black.copy(alpha = 0.72f))) добавить поверх контента, когда state.listening == true, маленький красный круг в верхнем правом углу (по центру своей половины экрана, т.е. с отступом от края):

if (state.listening) {
    Box(
        modifier = Modifier
            .align(Alignment.TopEnd)
            .padding(top = 12.dp, end = 12.dp)
            .size(16.dp)
            .background(Color(0xFFFF3B30), CircleShape),
    )
}

Нужные импорты добавить: androidx.compose.foundation.shape.CircleShape, androidx.compose.foundation.layout.size, Modifier.align (уже есть Alignment). Проверить, что Box-контейнер позволяет align (должен, т.к. это BoxScope).

Кружок виден только в режиме «слушаю» (listening=true): при «думаю...» и при показе ответа — не показывается (микрофон уже закрыт). Это соответствует смыслу: индикатор = идёт запись.

Никаких изменений протокола, телефона, жестов, логики — только отрисовка индикатора.

Сборка, тесты, коммит

  • ./gradlew :lib-core:build :app-glasses:assembleDebug :app-phone:assembleDebug — BUILD SUCCESSFUL.
  • git add -A && git commit -m 'Очки: красный индикатор записи микрофона в режиме «слушаю»' (БЕЗ push).

КРИТИЧЕСКИЕ ПРАВИЛА

  • workspace = /root/WORK/view-mate. Пути ТОЛЬКО относительные от корня (app-glasses/...). НИКОГДА /root/WORK/app-* (без view-mate) — external_directory, permission-guard отклонит.
  • НЕ трогать: app-phone, lib-core, LocalLlm.kt (GPU), скорость, клавиатуру, автоименование, AssistantGestures.kt, матрицу жестов, HostConnection.kt, MainActivity.kt, GlassesApp.kt.
  • В конце — краткий отчёт: файлы, изменения, сборка, тесты.