phone: autonomous Shizuku revive over wireless-adb; glasses screen on/off buttons
AdbClient wraps the bundled libadb.so (useLegacyPackaging -> exec from nativeLibraryDir, HOME/TMPDIR overridden, adb key injected into BuildConfig from ~/.android at build time and never committed). ShizukuProvisioner: on each BLE+WiFi connect it enables ADB-over-WiFi via Mercury, connects with mDNS fallback, pushes the Shizuku starter and runs it; runs once per BLE session, does not relaunch GlassesApp when the WS channel is already up, and exposes runShell() for arbitrary commands. DebugReceiver (DUMP) + am start --ez provision for diagnostics. Protocol: ShizukuStatus(running/granted) + RequestShizukuStatus; glasses push it on connect and on Shizuku state change, using a passive probe() that never shows a permission dialog. Glasses kill-guard now recreates its UserService when the Shizuku binder dies instead of spamming DeadObjectException. Mercury: brightness disables auto-brightness first (was silently ignored), BLE auto-connect loop retries every 6s (fixes 'searches then stops'). New phone section 'Экран очков' with wake/sleep via adb (input keyevent 224/223).
This commit is contained in:
@@ -116,6 +116,11 @@ data object Shutdown : VmMessage
|
||||
@SerialName("get_app_list")
|
||||
data object GetAppList : VmMessage
|
||||
|
||||
/** Просьба к очкам прислать текущее состояние Shizuku (см. [ShizukuStatus]). */
|
||||
@Serializable
|
||||
@SerialName("request_shizuku_status")
|
||||
data object RequestShizukuStatus : VmMessage
|
||||
|
||||
@Serializable
|
||||
data class AppEntry(
|
||||
val packageName: String,
|
||||
@@ -154,6 +159,20 @@ data class AppLaunchedAck(
|
||||
val success: Boolean,
|
||||
) : VmMessage
|
||||
|
||||
/**
|
||||
* Состояние Shizuku на очках.
|
||||
*
|
||||
* [running] — жив ли сервер Shizuku (`Shizuku.pingBinder()`): без него GlassesApp не может
|
||||
* создать VirtualDisplay, и его надо поднимать через ADB. [granted] — выдано ли нашему
|
||||
* приложению разрешение (если сервер жив, но прав нет, лечится диалогом на очках, не ADB).
|
||||
*/
|
||||
@Serializable
|
||||
@SerialName("shizuku_status")
|
||||
data class ShizukuStatus(
|
||||
val running: Boolean,
|
||||
val granted: Boolean,
|
||||
) : VmMessage
|
||||
|
||||
// =====================================================================
|
||||
// Bidirectional
|
||||
// =====================================================================
|
||||
|
||||
Reference in New Issue
Block a user