feat(app-glasses): AR-метка RayNeoX2 (com.rayneo.mercury.app) + тема + landscape

Из pair-view: meta-data com.rayneo.mercury.app=true — очки распознают
приложение как AR (без неё открывалось как обычное). Тема
Theme.ViewMateGlasses (чёрный фон, fullscreen), screenOrientation
landscape, hardwareAccelerated. Плюс фикс краша: prefs читались в
конструкторе Application (до attachBaseContext) — перенесено в onCreate.
Проверено на железе: открывается через лаунчер нормально.
This commit is contained in:
Hermes Agent
2026-08-20 01:22:27 +03:00
parent 896185244b
commit 9f1c6735c1
4 changed files with 33 additions and 4 deletions
@@ -1,6 +1,7 @@
package pw.binom.viewmate.glasses
import android.app.Application
import android.content.Context
import com.rayneo.arsdk.android.MercurySDK
import java.io.File
import kotlinx.coroutines.flow.MutableStateFlow
@@ -28,12 +29,24 @@ class GlassesApp : Application() {
lateinit var downloadManager: GlassesDownloadManager
private set
/** Масштаб экрана очков (0.5..1.0); задаётся пультом телефона. */
private val prefs by lazy {
getSharedPreferences("viewmate_prefs", Context.MODE_PRIVATE)
}
/** Масштаб экрана очков (0.5..1.0). Загружается в onCreate (prefs — после привязки контекста). */
val scale = MutableStateFlow(1f)
/** Применить и сохранить масштаб. */
fun applyScale(value: Float) {
val v = value.coerceIn(0.5f, 1f)
scale.value = v
prefs.edit().putFloat("scale", v).apply()
}
override fun onCreate() {
super.onCreate()
instance = this
scale.value = prefs.getFloat("scale", 1f).coerceIn(0.5f, 1f)
MercurySDK.init(this)
movieController = MovieController(applicationContext)
movieController.eventLogger = { msg -> logToFile("mc: $msg") }
@@ -223,7 +223,7 @@ class HostConnection(
is SetMode -> addMessage("SetMode: ${msg.mode}")
is SetScale -> {
GlassesApp.instance.scale.value = msg.scale.coerceIn(0.5f, 1f)
GlassesApp.instance.applyScale(msg.scale)
log("app", "scale → ${msg.scale}")
}