本文仅供个人参考,由于还是初学,出错之处望能指出。由于没有源码,好多东西靠回忆,难免有出入,我会完善的。
最近在做Android 4.1 关机充电的实现,前后历经各种问题,基本解决。现总结如下:
1 关机充电代码具体实现在system/core/charger/charger.c, 编译时编进boot.img, 打log方法:LOGI(“ \n”);
2 具体代码流程:
先从system/core/init/init.c说起。在init.c里解析init.rc文件,将service加入队列。在builtins.c里执行do_class_start()按照class 开启服务。当检测到时charger service 时,进入关机充电程序-----charger.c.
在main函数中,首先检测usb线是否存在,之前没加这个检测,发现关机状态插usb线立马拔掉,机子还是会显示1~2秒的关机充电动画,显然,这不科学。之后就是各种初始化,包括kmsg, kernel 事件上报的回调函数input_callback; 然后是加载关机充电动画的图像,由于加入了低电量警示动画,加载图片好多。然后申请wake_lock, 之后charger->next_key_check = -1;
charger->next_screen_check = -1;reset_animation; kick_animation,set_brightness(100), 进入event_loop
在event_loop, 进入while (true)的无限循环。
(1) 读取当前时间,后面会用来判断动画是否超时(如超时,亮度调至0&#x