[03/31/2013][Android]Power off Charge 总结

本文总结了Android 4.1系统中关机充电的实现过程,涉及charger.c的代码流程,包括USB检测、动画处理、按键事件等。在实现过程中遇到了动画拉伸、屏幕唤醒延迟、电源键响应和视频模式显示问题,并逐一给出了解决方案。通过这个过程,作者深入理解了framebuffer、电源管理和wake_lock等技术。
摘要由CSDN通过智能技术生成

本文仅供个人参考,由于还是初学,出错之处望能指出。由于没有源码,好多东西靠回忆,难免有出入,我会完善的。

最近在做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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值