6cd4a8de43
- Mercury (app-phone): управление яркостью (с авто-выкл. перед применением) и WiFi (скан/подключение/список сетей с паролем); добавлено право BLUETOOTH_ADVERTISE в манифест и runtime-запрос (без него GATT-сервер не рекламируется → очки не подключаются) - логирование (lib-core core.log): BatchingLogCollector + LogSink + LogSpool + LokiLogSink; цепочка очки→телефон→Loki; lib-core log() переадресован в коллектор - STT: Qwen3-ASR через pw.binom.asr:asr-qwen3-android, убран in-house whisper-фоллбек - audio-sync: P-регулятор с насыщением вместо фиксированной скорости - media-split: очки только video, телефон только audio (UI-чипы) - Components: форматирование размера через Locale.ROOT
21 lines
804 B
Kotlin
21 lines
804 B
Kotlin
package pw.binom.viewmate.glasses
|
|
|
|
import pw.binom.viewmate.core.log.LogBatch
|
|
import pw.binom.viewmate.core.log.LogSink
|
|
import pw.binom.viewmate.core.protocol.LogBatchMsg
|
|
|
|
/**
|
|
* LogSink коллектора очков: пачка уходит на телефон по связи очков↔телефон
|
|
* ([LogBatchMsg]). Связи нет → false: пачка прихраняется в споуле очков
|
|
* (filesDir) и ретраится после восстановления связи.
|
|
*/
|
|
class GlassesLinkLogSink(
|
|
private val connection: HostConnection,
|
|
) : LogSink {
|
|
override suspend fun send(batch: LogBatch): Boolean {
|
|
if (!connection.connected.value) return false
|
|
connection.sendToHost(LogBatchMsg(entries = batch.entries))
|
|
return true
|
|
}
|
|
}
|