Android 在emulator设置GUI或telnet上设置电池电量/状态与adb dumpsys电池组有何不同?

Android 在emulator设置GUI或telnet上设置电池电量/状态与adb dumpsys电池组有何不同?,android,android-studio,android-emulator,battery,Android,Android Studio,Android Emulator,Battery,我正在尝试创建一个监控电池电量的应用程序,但由于实时测试会非常麻烦,我想通过模拟器模拟不同的值和充电状态 当我通过单击工具栏上的“…”进入emulator设置GUI,然后转到“电池”并更改值时,它在emulator中不起作用。操作系统的电池指示灯始终显示电池电量为100%等 在研究过程中,我发现了另外两种改变电池状态的方法: 通过telnet和adb。Telnet与emulator设置GUI中设置的值相匹配,反之亦然,但不会更改系统中的实际值。电池状态指示器和使用batteryStatus.ge

我正在尝试创建一个监控电池电量的应用程序,但由于实时测试会非常麻烦,我想通过模拟器模拟不同的值和充电状态

当我通过单击工具栏上的“…”进入emulator设置GUI,然后转到“电池”并更改值时,它在emulator中不起作用。操作系统的电池指示灯始终显示电池电量为100%等

在研究过程中,我发现了另外两种改变电池状态的方法:

通过telnet和adb。Telnet与emulator设置GUI中设置的值相匹配,反之亦然,但不会更改系统中的实际值。电池状态指示器和使用
batteryStatus.getIntExtra
etc获取值都不受影响。 仅使用adb shell dumpsys电池组20级即可达到预期效果

为什么??那么telnet和设置中的控件实际上会发生什么变化?有没有办法让设置真正起作用,以便我可以通过模拟器设置GUI更改电池电量和状态


我使用的是Windows 10上的Android Studio 3.5.3以及29.3.4-6110076版API 29附带的仿真器。

在Android Pie下,telnet路由工作正常(至少对于我们用来测试的相对较旧的AVD是如此)-它与构成Android仿真器基础的qemu系统联系,你可以将功率容量设置为20或其他。GUI似乎使用了这个路径。这些参数由
dumpsys电池
逻辑反映。。。直到您开始通过
dumpsys电池组设置它们,此时dumpsys开始忽略qemu值

在Android 10下,似乎只有adb命令生效,所以他们对qemu参数的跟踪被破坏了——我没有看到任何关于它的公告,所以我认为这是偶然的

如果它不再在GUI中工作,那么Emulator团队中可能没有人告诉GUI团队他们计划打破qemu路线


我注意到Android 10的模拟速度明显慢于Pie,尽管在CPU级别上的上下文切换更少,所以可能更深层次的东西已经改变,qemu链接是一个牺牲品。

我认为对于Windows 10,你需要使用PuTTY。另外,点击telnet到emulator会得到什么消息?我通过“添加/删除Windows功能”安装了对Windows 10的telnet支持。在打开cmd.exe和telnetting之后,我得到了“auth required”,所以我输入了“auth”,然后我得到了“OK”,当我输入“power capacity 50”时,我也得到了“OK”。但我甚至不关心telnet,我希望能够通过emulator设置GUI更改电池状态,它不工作,只在adb shell上工作。还尝试了PuTTY,在“auth”之后写着“KO:禁止的二进制请求。正在中止”