phone: AdbController — единственная точка входа для adb-команд; screen on/off через Канал 1
- AdbController: shell/push/ensureConnected/invalidate; перед каждой командой проверяет соединение (echo ok) и сам поднимает wireless-adb (Mercury -> mDNS -> connect). Мьютекс только на подъём, длинный бутстрап не блокирует команды. - ShizukuProvisioner переведён на AdbController (adb-код вынесен). - Убрана неработающая UI-консоль adb (нужен только программный API). - ScreenControl(sleep) в shared: гашение/пробуждение экрана очков их же Shizuku-UserService (инжект 223/224 как shell), не зависит от Mercury/adb. - VmPhoneController.setScreen + кнопки «Экран очков» на Канале 1. - DebugReceiver: DEBUG_ADB_SHELL (+ SET_DEEP_SUSPEND) как отладочный инструмент. - MercuryController/AdbClient: сопутствующие правки.
This commit is contained in:
@@ -8,6 +8,7 @@ import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.launch
|
||||
import pw.binom.rayneovm.phone.adb.AdbController
|
||||
import pw.binom.rayneovm.phone.bootstrap.ShizukuProvisioner
|
||||
import pw.binom.rayneovm.phone.mercury.MercuryController
|
||||
import pw.binom.rayneovm.phone.mercury.MercuryControllerProvider
|
||||
@@ -22,14 +23,16 @@ import pw.binom.rayneovm.phone.protocol.VmPhoneController
|
||||
* При старте подготавливает контроллер [VmPhoneController] (auto-reconnect к очкам через mDNS)
|
||||
* и [MercuryController] (второй канал — RayNeo Mercury BLE).
|
||||
*/
|
||||
class PhoneVmApp : Application(), ControllerProvider, MercuryControllerProvider, ShizukuProvisionerProvider {
|
||||
class PhoneVmApp : Application(), ControllerProvider, MercuryControllerProvider,
|
||||
ShizukuProvisionerProvider, AdbControllerProvider {
|
||||
|
||||
private val appScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
|
||||
|
||||
private val controller: VmPhoneController by lazy { VmPhoneController(this) }
|
||||
private val mercuryController: MercuryController by lazy { MercuryController(this) }
|
||||
private val adbController: AdbController by lazy { AdbController(this, mercuryController) }
|
||||
private val provisioner: ShizukuProvisioner by lazy {
|
||||
ShizukuProvisioner(this, mercuryController, controller)
|
||||
ShizukuProvisioner(this, mercuryController, controller, adbController)
|
||||
}
|
||||
|
||||
override fun onCreate() {
|
||||
@@ -90,6 +93,7 @@ class PhoneVmApp : Application(), ControllerProvider, MercuryControllerProvider,
|
||||
override fun provideController(): VmPhoneController = controller
|
||||
override fun provideMercuryController(): MercuryController = mercuryController
|
||||
override fun provideShizukuProvisioner(): ShizukuProvisioner = provisioner
|
||||
override fun provideAdbController(): AdbController = adbController
|
||||
|
||||
companion object {
|
||||
private const val TAG = "PhoneVmApp"
|
||||
@@ -101,3 +105,8 @@ class PhoneVmApp : Application(), ControllerProvider, MercuryControllerProvider,
|
||||
interface ShizukuProvisionerProvider {
|
||||
fun provideShizukuProvisioner(): ShizukuProvisioner
|
||||
}
|
||||
|
||||
/** Провайдер adb-контроллера (единая точка входа для adb-команд) для UI. */
|
||||
interface AdbControllerProvider {
|
||||
fun provideAdbController(): AdbController
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user