Android之关机/重启/recovery模式(一百一十五)

这篇博客介绍了三种在Android设备上进行关机、重启和进入Recovery模式的方法:通过App调用系统API、使用setprop命令以及使用adb shell命令。详细阐述了每种方法的实现步骤,并提到了在init的reboot.c中adb reboot-p命令的底层调用机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.方式一:App调用系统api

SystemProperties.set("sys.powerctl", "shutdown," + reason);

2.方式二:setprop

1.关机
# adb shell setprop sys.powerctl shutdown

2.重启
# adb shell setprop sys.powerctl reboot


3.recovery模式
# adb shell setprop sys.powerctl reboot,recovery

注意:在init的reboot.c中,

          adb reboot -p命令其实就是调用的setprop命令开关机的。 

3.方式三:

1.关机
# adb reboot -p


2.重启
# adb reboot


3.recovery
# adb reboot bootloader

`bootable/recovery/recovery.cpp` 是 Android 源码中 `recovery` 模块的主要启动代码,该文件定义了 `main()` 函数,用于启动 `recovery` 程序,并执行相应的操作。下面是 `recovery.cpp` 文件的部分代码: ```cpp int main(int argc, char **argv) { RecoveryUI::Options ui_options; ui_options.allow_toggle_display = true; ui_options.locale = ""; RecoveryUI ui(ui_options); ... // Initialize the recovery API. if (register_update_callback(&on_update, &ui)) { LOGE("Can't register the update callback\n"); return EXIT_FAILURE; } ... // Initialize the command listener. if (!strcmp(basename(argv[0]), "recovery")) { // In recovery mode, only listen on the socket. if (socket_name.empty()) { socket_name = DEFAULT_SOCKET; } if (start_recovery_socket(socket_name, &should_abort)) { LOGE("Can't start recovery service with socket '%s'\n", socket_name.c_str()); return EXIT_FAILURE; } } else { ... } ... } ``` 在 `main()` 函数中,首先创建了一个 `RecoveryUI` 对象,用于管理 `recovery` 界面的显示。接着,通过调用 `register_update_callback()` 函数注册了更新回调函数 `on_update()`,用于在更新过程中更新 `recovery` 界面的显示。最后,根据启动命令行参数,启动相应的服务,包括 `recovery` 服务和 `adb` 服务。 需要注意的是,`recovery` 模块的启动和执行过程比较复杂,涉及到诸多细节问题。如果想深入了解 `recovery` 模块的实现原理,需要仔细阅读 `bootable/recovery` 目录下的其他源代码文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android系统攻城狮

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值