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:
@@ -112,6 +112,23 @@ object ShizukuBootstrap {
|
||||
|
||||
fun isGranted(): Boolean = _state.value == AllowState.Granted
|
||||
|
||||
/** Снимок состояния без побочных эффектов (не показывает диалог разрешения). */
|
||||
data class Snapshot(val running: Boolean, val granted: Boolean)
|
||||
|
||||
/**
|
||||
* Пассивная проверка Shizuku: жив ли сервер и выдан ли нам permission.
|
||||
*
|
||||
* Зовётся из сервиса (не из Activity), поэтому не имеет права запрашивать разрешение —
|
||||
* только читает. Нужна, чтобы телефон узнал, поднимать ли Shizuku через ADB.
|
||||
*/
|
||||
fun probe(): Snapshot {
|
||||
val running = try { Shizuku.pingBinder() } catch (_: Throwable) { false }
|
||||
val granted = if (!running) false else try {
|
||||
Shizuku.checkSelfPermission() == 0 /* PERMISSION_GRANTED */
|
||||
} catch (_: Throwable) { false }
|
||||
return Snapshot(running = running, granted = granted)
|
||||
}
|
||||
|
||||
/**
|
||||
* Хук для Activity.onRequestPermissionResult: перенаправить в Shizuku.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user