Document overlay service handshake, window cleanup and gesture error ownership
This commit is contained in:
1 parent
1559e0681b
commit
4de7d7ec9d
1 file changed
+39
@@ -374,6 +374,38 @@ Demand ограничивает батч viewer; GAP/CLOSED требуют сб
|
||||
|
||||
## Фон и диагностика
|
||||
|
||||
`RadioOverlayService` на main обеспечивает foreground-режим микрофона при активной
|
||||
рации и включённом оверлее либо автоматике. Сам PCM захватывает RadioAudioEngine;
|
||||
разрешённый экран/фоновое окно по-прежнему проверяются движком. Старт FGS
|
||||
откладывается до видимой Activity. Разрешения запрашиваются только явной командой
|
||||
пользователя; отказ launcher снимает ожидание и допускает повтор. Ошибки настроек,
|
||||
проверки разрешения и обновления языка логируются с причиной.
|
||||
|
||||
Starting удерживается от запроса ОС до onCreate; stop в этом промежутке ставит
|
||||
pendingStop. Сервис сначала завершает foreground-handshake, затем запрашивает
|
||||
остановку. Новый запрос во время stop ждёт onDestroy. Отказ stopService/исключение
|
||||
не фиксирует pendingStop навсегда и допускает повтор. Ошибки создания канала,
|
||||
promote и получения WindowManager попадают в общий rollback запуска. Уведомление
|
||||
оверлея имеет отдельный ID 1005, без замены звонкового FGS (1002) и результатов
|
||||
вызовов (1003/1004). Обновление языка не публикует уведомление остановленного владельца.
|
||||
|
||||
Окно и LayoutParams сохраняются до addView: исключение после эффекта API получает
|
||||
remove. Успешный remove либо IllegalArgumentException подтверждает отсутствие окна;
|
||||
прочие отказы сохраняют ссылку и отключают обработку касаний. IsShown означает
|
||||
добавленное либо ещё не подтверждённо удалённое окно. После onDestroy такой
|
||||
владелец остаётся в currentService, и sync повторяет очистку до замены новым.
|
||||
Повторный/поздний onDestroy не гасит новый сервис. Touch/layout callbacks проверяют
|
||||
identity окна и владельца; старый callback позиционирования не сбрасывает флаг нового.
|
||||
|
||||
Обычное отпускание OVERLAY оставляет хвост 250 мс. Два коротких тапа фиксируют PTT;
|
||||
следующее нажатие снимает latch. Drag начинается только в первые 300 мс удержания,
|
||||
снимает PTT с обычным хвостом и сохраняет выбранную позицию до нового окна.
|
||||
ACTION_CANCEL, ошибка перемещения, remove и stop отменяют OVERLAY сразу, сохраняя
|
||||
BUTTON/VOLUME. Ошибка окна и отзыв разрешения также останавливают ненужный FGS,
|
||||
если автоматическая передача его не удерживает. При разрешённой автоматике
|
||||
сервис может продолжать работу без плавающей кнопки. Ошибка observer не уходит
|
||||
в необработанное исключение: свой PTT/окно закрываются, сервис запрашивает stop.
|
||||
|
||||
`IncomingCallManager` на main владеет одним входящим оповещением P2P/рации.
|
||||
Повтор `show` с теми же ID/каналом/пиром/видом обновляет только уведомление.
|
||||
Замена сначала снимает прежнее оповещение. Ошибки wake lock и уведомления
|
||||
@@ -557,6 +589,13 @@ CoreActivity и гудки. Управляемые Android/JNI/repository-гра
|
||||
публикации результатов. IncomingCallLifecycleTest также использует настоящий
|
||||
рационный контроллер при доставке DECLINE. Радиоэфир и C-сигналинг в JVM не
|
||||
запускаются; native-протокол проверяется отдельным test_radio.
|
||||
RadioOverlayLifecycleTest использует настоящие overlay service, RadioAudioEngine,
|
||||
микрофонные подписки и MediaAudioController. Host-модели service/window IPC
|
||||
проверяют частичные add/remove, повторную очистку, отказы channel/promote/stop,
|
||||
старые touch/layout/destroy callbacks, PTT/latch/drag, отзыв разрешений и
|
||||
изолированные ID уведомлений. Settings ACK позволяет выполнять настоящие PCM
|
||||
workers через управляемую JNI-границу. WindowManager/foreground restrictions,
|
||||
отрисовка и OEM-поведение на устройстве в JVM не проверяются.
|
||||
На Linux `:app:testDebugUnitTest` также запускает 25 fault-сценариев настоящего
|
||||
JNI logger через `:app:testJniLog`; окружение и границы модели: `tests/jni_log/README.md`.
|
||||
Проверки native bridge/standby доступны в `tests/Makefile.am`;
|
||||
|
||||
Reference in new issue
Block a user