本文的led是三色的分别是红色,蓝色,绿色

红色:低电量,电量低于15%

蓝色:充电,电量在15%到90%之间

绿色:电量在90%到100%

开机充电情况:

驱动层:

mediatek\custom\**project\lk\cust_leds.c

static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {{"red",               MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK0,{0,0,0,0,0}},{"green",             MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK1,{0,0,0,0,0}},{"blue",              MT65XX_LED_MODE_NONE, MT65XX_LED_PMIC_NLED_ISINK2,{0,0,0,0,0}},{"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},{"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},{"button-backlight",  MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},{"lcd-backlight",     MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0,0,0,0,0}},
};

上层:

aplse\frameworks\base\core\res\res\values\config.xml

上层配置文件,修改开机充电模式下led显示情况

 <!-- Display low battery warning when battery level dips to this value --><integer name="config_lowBatteryWarningLevel">15</integer>    控制低电量的最低值<!-- Close low battery warning when battery level reaches this value --><integer name="config_lowBatteryCloseWarningLevel">20</integer><!-- Default color for notification LED. --><color name="config_defaultNotificationColor">#ffffffff</color><!-- Default LED on time for notification LED in milliseconds. --><integer name="config_defaultNotificationLedOn">500</integer><!-- Default LED off time for notification LED in milliseconds. --><integer name="config_defaultNotificationLedOff">2000</integer><!-- Default value for led color when battery is low on charge --><integer name="config_notificationsBatteryLowARGB">0xFFFF0000</integer>    低电量红色<!-- Default value for led color when battery is medium charged --><integer name="config_notificationsBatteryMediumARGB">0xFF0000FF</integer>     15到90 蓝色<!-- Default value for led color when battery is fully charged --><integer name="config_notificationsBatteryFullARGB">0xFF00FF00</integer>    90以上绿色

apls\ frameworks\base\services\java\com\android\server\BatteryService.java

     public void updateLightsLocked() {final int level = mBatteryProps.batteryLevel;final int status = mBatteryProps.batteryStatus;if(mIPOBoot){//Get led status in IPO modegetIpoLedStatus();}if (level < mLowBatteryWarningLevel) {if (status == BatteryManager.BATTERY_STATUS_CHARGING) {updateLedStatus();// Solid red when battery is chargingmBatteryLight.setColor(mBatteryLowARGB);} else {LowLevelFlag = true;updateLedStatus();// Flash red when battery is low and not chargingmBatteryLight.setFlashing(mBatteryLowARGB, LightsService.LIGHT_FLASH_TIMED,mBatteryLedOn, mBatteryLedOff);}} else if (status == BatteryManager.BATTERY_STATUS_CHARGING|| status == BatteryManager.BATTERY_STATUS_FULL) {if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90) {updateLedStatus();// Solid green when full or charging and nearly full     mBatteryFullARGBmBatteryLight.setColor(mBatteryFullARGB);} else {updateLedStatus();// Solid orange when charging and halfway fullmBatteryLight.setColor(mBatteryMediumARGB);}} else {if(ipo_led_on && mIPOBoot){if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90) {mBatteryLight.setColor(mBatteryFullARGB);}else {mBatteryLight.setColor(mBatteryMediumARGB);}mIPOBoot = false;ipo_led_on = false;}// No lights if not charging and not lowmBatteryLight.turnOff();}}

这里是对三色的判断并输出

关机充电情况:

修改两个文件:  mediatek\external\ipod目录下面的ipodlights.cpp和ipodmain.h

修改的代码如下:

ipodlights.cpp

#include <stdio.h>
#include <utils/Log.h>
#include "ipodmain.h"#define LED_RED_PATH "/sys/class/leds/red/brightness"
#define LED_BLUE_PATH "/sys/class/leds/blue/brightness"
#define BATTERY_CAPACITY_PATH "/sys/class/power_supply/battery/capacity"
#define LED_GREEN_PATH "/sys/class/leds/green/brightness"
#define LED_ONOFF_PROP  "sys.ipo.ledon"/*
int (*ipod_chglights[])(void) = {lights_init,lights_chgfull,lights_chgon,lights_chgexit,
};
*/static int led_isOn = CONTROL_UNKNOWN;
static int led_green_isOn = CONTROL_UNKNOWN;
static int led_red_isOn = CONTROL_UNKNOWN;
static int led_blue_isOn = CONTROL_UNKNOWN;
static int nChargingFull = CONTROL_UNKNOWN;
static int nChargingRemoved = CONTROL_UNKNOWN;void turn_led_on()
{if (led_isOn == CONTROL_ON)return;led_isOn = CONTROL_ON;property_set(LED_ONOFF_PROP, "1");
}void turn_led_off()
{if (led_isOn == CONTROL_OFF)return;led_isOn = CONTROL_OFF;property_set(LED_ONOFF_PROP, "0");
}void start_blue_led(int skew)
{if (led_blue_isOn == CONTROL_ON)return;led_blue_isOn = CONTROL_ON;if (skew > 255) skew = 255;else if (skew < 0) skew = 0;set_int_value(LED_BLUE_PATH, skew);
}void stop_blue_led()
{if (led_blue_isOn == CONTROL_OFF)return;led_blue_isOn = CONTROL_OFF;set_int_value(LED_BLUE_PATH, 0);
}void start_red_led(int skew)
{if (led_red_isOn == CONTROL_ON)return;led_red_isOn = CONTROL_ON;if (skew > 255) skew = 255;else if (skew < 0) skew = 0;set_int_value(LED_RED_PATH, skew);
}void stop_red_led()
{if (led_red_isOn == CONTROL_OFF)return;led_red_isOn = CONTROL_OFF;set_int_value(LED_RED_PATH, 0);
}void start_green_led(int skew)
{if (led_green_isOn == CONTROL_ON)return;led_green_isOn = CONTROL_ON;if (skew > 255) skew = 255;else if (skew < 0) skew = 0;set_int_value(LED_GREEN_PATH, skew);
}void stop_green_led()
{if (led_green_isOn == CONTROL_OFF)return;led_green_isOn = CONTROL_OFF;set_int_value(LED_GREEN_PATH, 0);
}int lights_chgfull()
{/* do not block this function like sleep */SXLOGI("lights_chgfull");pthread_mutex_lock(&mutex);nChargingFull = CONTROL_ON;nChargingRemoved = CONTROL_OFF;stop_blue_led(); start_green_led(255);turn_led_on();pthread_mutex_unlock(&mutex);return 0;
}int lights_chgon()
{SXLOGI("lights_chgon");#if 1pthread_mutex_lock(&mutex);nChargingFull = CONTROL_OFF;nChargingRemoved = CONTROL_OFF;stop_green_led();if(get_int_value(BATTERY_CAPACITY_PATH) < 15){stop_blue_led();   start_red_led(255); }else{stop_red_led();start_blue_led(255); }turn_led_on();  pthread_mutex_unlock(&mutex);
#else// an example of light on 2sec, off 3sec.pthread_mutex_lock(&mutex);if (nChargingFull != CONTROL_ON && nChargingRemoved != CONTROL_ON){nChargingFull = CONTROL_OFF;nChargingRemoved = CONTROL_OFF;stop_green_led();start_red_led(255);   turn_led_on();}else{nChargingFull = CONTROL_OFF;nChargingRemoved = CONTROL_OFF;pthread_mutex_unlock(&mutex);return 0;}pthread_mutex_unlock(&mutex);usleep(2000*1000); //sleep 2 secpthread_mutex_lock(&mutex);if (nChargingFull != CONTROL_ON && nChargingRemoved != CONTROL_ON){stop_red_led();turn_led_off();}// reset the state to let next time chgon can work normally.nChargingFull = CONTROL_OFF;nChargingRemoved = CONTROL_OFF;pthread_mutex_unlock(&mutex);
#endif return 0;
}int lights_chgexit()
{/* do not block this function like sleep */SXLOGI("lights_chgexit");pthread_mutex_lock(&mutex);nChargingFull = CONTROL_OFF;nChargingRemoved = CONTROL_ON;stop_green_led();if(get_int_value(BATTERY_CAPACITY_PATH) < 15){stop_red_led();}else{stop_blue_led();}turn_led_off();pthread_mutex_unlock(&mutex);return 0;
}

ipodmain.h头文件中需要添加get_int_value()

android mtk6592 添加led三色灯,红色蓝色绿色相关推荐

  1. AIE红色/蓝色/绿色荧光聚苯乙烯微球/比色-荧光双信号ALE荧光微球的相关研究

    下面小编给大家整理了AIE红色/蓝色/绿色荧光聚苯乙烯微球/比色-荧光双信号ALE荧光微球的相关研究和制备方法,和小编一起来看! AIE红色/蓝色/绿色聚苯乙烯微球的制备: 以乙醇为分散介质,聚乙烯吡 ...

  2. Web前端作业:Html+JS实现的图片镜像、黑白、红色、绿色、蓝色及还原

    基本实现 首先我们来到主界面,有一些图片供选择. 我们随便挑选一张图片,假如选择甘雨,进入甘雨的二级界面: 我们看到有六个按钮,上面五个分别是镜像.黑白.红色.绿色.蓝色,下面最大的是还原. 使用镜像 ...

  3. Java实现扣去图像蓝色绿色背景

    首先我们知道图像的一个色彩空间就是RGB,意思是说从该角度看,每一张图片其实都是由Red(红色).Green(绿色).Blue(蓝色)这样的三基色组成.因此在许多电影拍摄或照相过程中,会经常用使用绿色 ...

  4. 亚马逊echo中国使用_为什么我的Amazon Echo闪烁黄色,红色或绿色?

    亚马逊echo中国使用 You just set up your Amazon Echo, and then you noticed that the ring around the top is d ...

  5. 【为您的 Android 应用添加图片】

    上一篇:[创建 Birthday Card 应用] 一.简介 在本文章中,您将学习如何使用 ImageView 向应用添加图片. 前提条件 了解如何在 Android Studio 中创建和运行新应用 ...

  6. Android端控制LED屏

    今天老师给讲了讲LED屏的协议,写了一个控制LED的程序,为了深入了解,我自己给代码全部加上注释. 布局: <LinearLayout xmlns:android="http://sc ...

  7. android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件

    Android图片添加文字水印并保存水印文字图片到指定文件package zhangphil.test;import android.graphics.Bitmap;import android.gr ...

  8. Nodemcu 驱动WS2812点灯红色变绿色的原因及解决

    初次接触FastLed,先点灯.开发环境VSCODE PlatformIO . 直接使用FastLed的示例blink程序,略有修改DATA_PIN D1,注释掉CLOCK_PIN. #include ...

  9. Android系统移植与调试之-------如何修改Android设备添加重启、飞行模式、静音模式等功能(一)...

    1.首先先来看一下修改前后的效果对比图 修改之后的图片 确认重启界面 具体的修改内容在下一篇中具体介绍. Android系统移植与调试之------->如何修改Android设备添加重启.飞行模 ...

最新文章

  1. HDU 1248 寒冰王座(全然背包:入门题)
  2. 她穿着自己用 17 封拒信做成的裙子,参加了博士论文答辩...
  3. celldex包使用
  4. QT学习:常用SQL命令
  5. python 错误处理 assert
  6. 令人振奋的好消息!2016年12月8日Google Developers中文网站发布!
  7. 带你熟悉鸿蒙轻内核Kconfig使用指南
  8. 固定字符结尾的正则_新手上路:图文解读助你理解和使用正则表达式
  9. android wps页面设置,WPS中设置纸张的方法
  10. PPT模板下载网站推荐
  11. android 音频压缩 silk,有损音频压缩格式大比拼─MP3、Ogg、AAC、HE-AAC、HE-AACv2、Opus究竟谁才是王者?...
  12. ps2手柄linux,索尼为PS5 DualSense手柄推出官方Linux驱动程序
  13. APS54085 外围电路简单_调光无频闪 智能家居照明
  14. 视网膜数据集(2)Messidor
  15. 中国都市女性抗衰洞察:Z世代抗衰意识普遍觉醒,“纹”题成抗衰重点
  16. ssm电影院管理系统的设计与实现毕业设计源码241505
  17. Uable to attach or mount volumes: unmounted volumes=[xxxx], unattached volumes=[xxxx]: timed out wa
  18. 微信自动发朋友圈源码
  19. 如何向别人介绍你做的东西
  20. 上传各种尺寸的头像,处理成正圆形的方法:【孟祥阳】

热门文章

  1. 物流云管理系统-免费版
  2. 对标yaahp的python工具包
  3. 绿天鹅——气候变化环境下的中央银行与金融稳定性
  4. hackbar2.1.3免费版本使用教程
  5. SSL证书 DV,OV,EV的区别
  6. inno setup安装打包模板
  7. 入门级Node.js express服务端开发_Android签到APP
  8. 苹果cmsv10白色简约好看的影视站自适应模板源码
  9. 年轻人不讲武德?12月19日来3306π深圳站学点真本事
  10. 亚信联创2011.9.17招聘会笔试题