关机充电属性使用
来源:互联网 发布:电子数据交换分类 编辑:程序博客网 时间:2024/04/28 02:15
手机关机充电时,会通过lk加载bootimage 并挂载根文件系统,最终运行到kernel 的init 进程。这时init 会挂载systemimage ,但并没有切换到是主文件系统,所以主文件系统中的东西是不能用的。
bootimage 是由kernel img 与 ramdisk 打包成的,这里ramdisk 是根文件系统,是打包的root 目录下内容。systemimage是主文件系统,打包的是/system下内容。
init 进程加载/default.prop 文件,挂载systemimage。
android属性文件值读取顺序通常为 /default.prop,/system/build.prop,/system/default.prop,/data/local.prop,文件也会生成在不同的位置。default.prop生成在root目录下,其他在对应的/system,/data目录下。default.prop与build.prop都是由通过编译目录下的build/core/Makefile文件生成的。
- # default.prop
- INSTALLED_DEFAULT_PROP_TARGET := $(TARGET_ROOT_OUT)/default.prop
- ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DEFAULT_PROP_TARGET)
- ADDITIONAL_DEFAULT_PROPERTIES := \
- $(call collapse-pairs, $(ADDITIONAL_DEFAULT_PROPERTIES))
- ADDITIONAL_DEFAULT_PROPERTIES += \
- $(call collapse-pairs, $(PRODUCT_DEFAULT_PROPERTY_OVERRIDES))
- ADDITIONAL_DEFAULT_PROPERTIES := $(call uniq-pairs-by-first-component, \
- $(ADDITIONAL_DEFAULT_PROPERTIES),=)
- $(INSTALLED_DEFAULT_PROP_TARGET):
- @echo Target buildinfo: $@
- @mkdir -p $(dir $@)
- $(hide) echo "#" > $@; \
- echo "# ADDITIONAL_DEFAULT_PROPERTIES" >> $@; \
- echo "#" >> $@;
- $(hide) $(foreach line,$(ADDITIONAL_DEFAULT_PROPERTIES), \
- echo "$(line)" >> $@;)
- build/tools/post_process_props.py $@
所以 ADDITIONAL_DEFAULT_PROPERTIES 与PRODUCT_DEFAULT_PROPERTY_OVERRIDES 定义的属性都可以使用到root目录,即ramdisk中。
PRODUCT_PROPERTY_OVERRIDES 定义的属性生成在/system/build.prop下,只能用于根文件系统。
init.rc 中
on charger
mount ext4 /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/system /system ro wait
chmod 0666 /dev/kmsg
Write /sys/devices/platform/battery_meter/FG_daemon_log_level 7
start fuelgauged
start kpoc_charger start servicemanager
service kpoc_charger /vendor/bin/kpoc_charger class charger
在init 进程中会启动kpoc_charger 服务,关机充电这个时候由于运行的是ramdisk 。
在根文件系统中
vendor -> /system/vendor
所以根文件系统 /vendor/bin/kpoc_charger 充电服务就对应着主文件/system/vendor/bin/kpoc_charge
系统的服务必须生成在root目录下或者以上边的形式链接到主文件系统下才能使用。
vendor\mediatek\proprietary\external\charger\charging_control.cpp
static int on_uevent(const char *buf, int len_buf){#ifdef VERBOSE_OUTPUTKPOC_LOGI("on_uevent, %s\n", buf);#endifif (!strcasestr(buf, UEVENT_BATTERY_CHANGE))return 1;//if ac or usb onlineif (is_charging_source_available()) {int ret = -1; char value[PROP_VALUE_MAX];int is_support_breath_plus = 0;bc = get_capacity(); ret = __system_property_get("ro.dyf.breathe.plus", value); if (ret > 0){ is_support_breath_plus = strcmp(value, "1") ? 0 : 1; }else if (ret == 0){ //is_support_breath_plus = 1; KPOC_LOGI("is_support_breath_plus =0, %s\n", value); }if ((is_support_breath_plus == 1) || (bc >= 90)) {lights_full();} else {if (nCurrentState != LIGHTS_STATE_CHGON) set_light_state(LIGHTS_CHGON); #ifdef BREATH_PLUS_SUPPORT lights_full(); #elselights_on(); #endif}}else exit_charger(EXIT_CHARGING_MODE);return 1;}
如果kpoc_charger 使用属性,这个时候必须在root目录下有对应的属性。
ADDITIONAL_DEFAULT_PROPERTIES += ro.dyf.breathe.plus=1
或者在Android.mk 中用宏控制。
ifneq ($(filter S12 S32 S21 S32LTE,$(TARGET_PRODUCT)),)
#LOCAL_CFLAGS += -DBREATH_PLUS_SUPPORT
endif
- 关机充电属性使用
- 关机充电进入充电模式
- 关机充电添加充电百分比
- 关机充电图标
- Android关机充电流程
- android 关机充电流程
- android 关机充电流程
- 关机充电图标修改
- LED 关机充电控制
- 笔记本电池是开机充电还是关机充电
- 关机充电时充电的坐标
- android关机充电流程、充电画面显示
- android关机充电流程、充电画面显示
- android关机充电流程、充电画面显示
- android关机充电流程、充电画面显示
- android关机充电流程、充电画面显示
- 关机充电降低功耗方法
- Android 修改关机充电动画
- 建立多人协作git仓库/git 仓库权限控制(SSH)
- ubuntu16.04 安装eclipse+C++
- 多线程中的Lock小结
- 用perl实现IP地址字符串转换为单个IP
- java对日期Date类进行加减运算、年份加减,月份加减
- 关机充电属性使用
- vue.js脚手架搭建
- 函数的返回值是指针
- 什么是http协议?
- 【Scala】通过【foldLeft】来判断一个List是否是另一个List的子集
- Windows编程 同步对象和技术
- darkflow测试和训练yolo
- web开发之路——HTML
- 【机器学习实战】第2章 K-近邻算法(KNN)