首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 电池(2):android关机充电流程、充电画面显示

2013-01-19 
android 电池(二):android关机充电流程、充电画面显示关键词:android 电池关机充电 androidboot.mode charg

android 电池(二):android关机充电流程、充电画面显示

关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示
平台信息:
内核:linux2.6/linux3.0
系统:android/android4.0 
平台:S5PV310(samsungexynos 4210) 

电池的基本原理;

android关机充电流程、充电画面显示;

Android开机充电流程,电池电量、低电信息是怎么处理的;

上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下android关机充电是怎么、充电画面显示是怎么实现的,这个在工作中也比较有用,我们开始做这一块的时候也走了不少的弯路。我记得我们做adnroid2.3的时候,关机状态和充电logo显示是在uboot中做的。应该是有两种做法,回头我再看下uboot中做画面显示那一块是怎么做的,这一节我们重点说系统中的充电logo显示。

一、android正常开机流程、关机充电流程

在写这篇文章之前我们先看两个流程:正常开机流程,关机充电系统启动流程

1、正常开机流程,按开机键。

可大致分成三部分

(1)、OS_level:UBOOT、kenrel、init这三步完成系统启动;

(2)、Android_level:这部分完成android部的初始化;

(3)、Home Screen:这部分就是我们看到的launcher部分。

android 电池(2):android关机充电流程、充电画面显示

2、关机充电系统启动流程

       与前面相比,这个流程只走到init这一部分,就没有往后走了,这部分我们会在后面的代码中分析。

android 电池(2):android关机充电流程、充电画面显示

二、关机充电逻辑硬件逻辑

1、插入DC,charger IC从硬件上唤醒系统,相当于长按开机键开机。

android 电池(2):android关机充电流程、充电画面显示

下面这部分是charger IC连接系统的控制部分。

android 电池(2):android关机充电流程、充电画面显示

三、软件逻辑。

DC插入,其实相当于关机状态下“按开机键”开机。第一步要走UBOOT、kernel 、android init这一流程。

1、UBOOT

       UBOOT启动代码我们不在这里详细分析,这里我们只要注意二个问题:

a:如何判断是DC插入;

b:设定setenv("bootargs", "androidboot.mode=charger"),androidboot.mode这个参数相当重要,这个参数决定系统是正常启动、还是关机充电状态。

Uboot/board/samsung/smdk4212/smkd4212.c

(5)、event_loop循环,电池状态,检测按键是否按下;

5、event_loop

       这个函数判断按键状态,DC是否插拔。如果长按开机:执行android_reboot(ANDROID_RB_RESTART,0, 0);如果拔出DC:执行android_reboot(ANDROID_RB_POWEROFF,0, 0);

static struct frame batt_anim_frames[] = {    {        .name = "charger/battery_0",        .disp_time = 750,        .min_capacity = 0,    },    {        .name = "charger/battery_1",        .disp_time = 750,        .min_capacity = 20,    },    {        .name = "charger/battery_2",        .disp_time = 750,        .min_capacity = 40,    },    {        .name = "charger/battery_3",        .disp_time = 750,        .min_capacity = 60,    },    {        .name = "charger/battery_4",        .disp_time = 750,        .min_capacity = 80,        .level_only = true,    },    {        .name = "charger/battery_5",        .disp_time = 750,        .min_capacity = BATTERY_FULL_THRESH,    },};

热点排行