当前位置: 首页 > wzjs >正文

什么网站发布找做效果图的sae 网站备案

什么网站发布找做效果图的,sae 网站备案,网页设计与制作学后感,网站开发策划书怎么写整体逻辑:设备充电速度的判断 系统通过读取充电器的最大电流(Current)与最大电压(Voltage),计算最大充电功率(Wattage),以此判断当前是慢充、普通充还是快充&#xff1a…

整体逻辑:设备充电速度的判断

系统通过读取充电器的最大电流(Current)最大电压(Voltage),计算最大充电功率(Wattage),以此判断当前是慢充、普通充还是快充:

  • 如果 maxChargingWattage <= 0:返回 CHARGING_UNKNOWN,说明未插电或读取失败;

  • 如果 maxChargingWattage < slowThreshold:返回 CHARGING_SLOWLY

  • 如果 maxChargingWattage > fastThreshold:返回 CHARGING_FAST

  • 否则:返回 CHARGING_REGULAR


1. Framework 层判断逻辑

public final int getChargingSpeed(Context context) {final int slowThreshold = context.getResources().getInteger(R.integer.config_chargingSlowlyThreshold);final int fastThreshold = context.getResources().getInteger(getFastChargingThresholdResId());return maxChargingWattage <= 0 ? CHARGING_UNKNOWN :maxChargingWattage < slowThreshold ? CHARGING_SLOWLY :maxChargingWattage > fastThreshold ? CHARGING_FAST :CHARGING_REGULAR;
}
  • 根据从 HAL 层传来的 maxChargingWattage 判断充电速度;

  • 阈值由资源文件 config.xml 提供(如下所示):

<!-- config.xml -->
<integer name="config_chargingSlowlyThreshold">3000000</integer> <!-- 3W -->
<integer name="config_chargingFastThreshold">12000000</integer> <!-- 12W -->
<integer name="config_chargingFastThreshold_v2">21000000</integer> <!-- 21W (用于新设备) -->

2. 最大充电功率的计算逻辑

frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java

从 Intent 提取电流电压并计算功率

private static int calculateMaxChargingMicroWatt(Intent batteryChangedIntent) {final int maxChargingMicroAmp = batteryChangedIntent.getIntExtra(EXTRA_MAX_CHARGING_CURRENT, -1);int maxChargingMicroVolt = batteryChangedIntent.getIntExtra(EXTRA_MAX_CHARGING_VOLTAGE, -1);return calculateMaxChargingMicroWatt(maxChargingMicroAmp, maxChargingMicroVolt);
}
  • 作用:batteryChangedIntent(电池广播 Intent)中读取两个字段:

    • EXTRA_MAX_CHARGING_CURRENT:最大充电电流,单位为 微安(µA)

    • EXTRA_MAX_CHARGING_VOLTAGE:最大充电电压,单位为 微伏(µV)

  • 若读取失败(无此字段),会返回默认值 -1

  • 然后调用重载的 calculateMaxChargingMicroWatt(int, int) 方法进行功率计算。

 根据电流电压计算功率

private static int calculateMaxChargingMicroWatt(int maxChargingMicroAmp, int maxChargingMicroVolt) {if (maxChargingMicroVolt <= 0) {maxChargingMicroVolt = DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT;}if (maxChargingMicroAmp > 0) {return (int) Math.round(maxChargingMicroAmp * 0.001 * maxChargingMicroVolt * 0.001); // 转换为 mA * mV = µW} else {return -1;}
}
  • 电压校验

    if (maxChargingMicroVolt <= 0)

    • 若未获取到有效电压(为0或负数),使用默认值 DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT(通常为 5000000,即 5V)。

  • 功率计算

    return (int) Math.round(maxChargingMicroAmp * 0.001 * maxChargingMicroVolt * 0.001);

    • 先将 µA 和 µV 转换成 mA 和 mV:

      • maxChargingMicroAmp * 0.001:µA ➝ mA

      • maxChargingMicroVolt * 0.001:µV ➝ mV

    • 计算公式:

      PuW=ImA×VmVP_{uW} = I_{mA} \times V_{mV}PuW​=ImA​×VmV​

      单位为微瓦(µW)

  • 返回无效值

    • 若电流无效(≤ 0),则返回 -1,表示无法计算有效功率。


3. 数据来源:HAL 层读取电流/电压

void BatteryMonitor::updateValues(void) {...for (每个充电器 charger) {读取 charger 的 current_max 节点 -> ChargingCurrent读取 charger 的 voltage_max 节点 -> ChargingVoltagedouble power = (ChargingCurrent / 1_000_000.0) * (ChargingVoltage / 1_000_000.0);如果 power 比之前最大值大:保存该电流电压到 mHealthInfo}
}
  • HAL 遍历 /sys/class/power_supply/ 下的所有充电器节点;

  • 从每个 charger 的 current_maxvoltage_max 读取最大支持值;

  • 计算每个充电器功率并取最大值填入 mHealthInfo

  • mHealthInfo.maxChargingCurrentMicroampsmaxChargingVoltageMicrovolts 将最终传给 Framework 层。


4. Kernel 层提供节点值

#define NORMAL_CHARGING_CURR_UA 500000     // 普通 USB:500mA
#define FAST_CHARGING_CURR_UA   1500000    // 快充口:1.5Astatic int mt6375_chg_get_property(...) {switch (psp) {case POWER_SUPPLY_PROP_CURRENT_MAX:if (type == USB) val->intval = NORMAL_CHARGING_CURR_UA;else if (type == USB_DCP) val->intval = FAST_CHARGING_CURR_UA;break;case POWER_SUPPLY_PROP_VOLTAGE_MAX:val->intval = vbus_global; // 动态返回当前 vbus 电压break;}
}
  • Kernel 驱动根据充电口类型(如 USB、USB_DCP)返回对应最大电流;

  • 电压通过变量 vbus_global 实时获取;

  • 这些值最终通过 power_supply 框架上传给 HAL 层读取。


 流程总结

[Kernel] 驱动读取 current_max & voltage_max 节点
     ↓
[HAL] BatteryMonitor 计算最大功率并存入 mHealthInfo
     ↓
[Framework] BatteryStatus 读取 Intent 中传来的最大 µA/µV,换算为 µW
     ↓
getChargingSpeed() 对比 config 阈值,判断是快充/慢充/普通


文章转载自:

http://nn8KINBo.xkjrs.cn
http://o5AvkzHK.xkjrs.cn
http://92JKac7A.xkjrs.cn
http://dB37Dkvx.xkjrs.cn
http://eR1MY2nL.xkjrs.cn
http://oQB83hUZ.xkjrs.cn
http://c4QNoe5l.xkjrs.cn
http://IhIWeqN7.xkjrs.cn
http://m2B3Eb3J.xkjrs.cn
http://WcezCBLv.xkjrs.cn
http://2LaJQGGq.xkjrs.cn
http://DRqxf9vl.xkjrs.cn
http://FOTW1OhP.xkjrs.cn
http://2jIINi03.xkjrs.cn
http://Nk80sDzz.xkjrs.cn
http://ih2lhmOg.xkjrs.cn
http://TPzYK06y.xkjrs.cn
http://M5cWc2Zl.xkjrs.cn
http://FbYh1NXr.xkjrs.cn
http://UO0zC9ha.xkjrs.cn
http://PKrovjz8.xkjrs.cn
http://AO725OKF.xkjrs.cn
http://W28Duwdu.xkjrs.cn
http://zHsJryCB.xkjrs.cn
http://azCIMVKN.xkjrs.cn
http://iByE6KPh.xkjrs.cn
http://FZ1YGQce.xkjrs.cn
http://t8P0Yr5Q.xkjrs.cn
http://UR7gBdoR.xkjrs.cn
http://26aDZByY.xkjrs.cn
http://www.dtcms.com/wzjs/656088.html

相关文章:

  • 华龙建设部网站查不到网页开发外包
  • 网站上怎么做全景看图宁波建设监理管理协会网站
  • 广告网站设计郑州代理记账网站建设
  • 网站开发一定得用html吗易语言可以做网站么
  • 5g云网站建设提供做网站
  • 网站的作用惠州搜索引擎seo
  • 建设公司网站的会计分录合肥最好的网站建设
  • 怎么做点击图片进入网站威海医院网站制作
  • 一家专门做护肤的网站网站开发与维护专业要学什么
  • 做一个英文网站多少钱深圳网络营销网站建设
  • 淘宝网站代做网站架构怎么做
  • 网站开发用用什么语言最好东莞微客巴巴做网站
  • 建设部官方网站建站用帝国还是wordpress
  • 统计网站访问量专门做兼职的网站有哪些
  • 千博网站管理系统安装推广品牌的策划方案
  • 手机免费网站空间做网站赚钱什么类型
  • 许昌住房和城乡建设局网站天猫网站什么时候建设
  • 摄影官网网站编辑seo
  • 网站建设师要求WordPress上下拖动效果
  • 物流网站建设评析手机浏览网页在线代理
  • 温州做网站厉害的公司有哪些怎么做视频网站赚钱吗
  • seo优化排名推广优化关键词方法
  • 2021中文字幕入口网站wordpress文章导入在哪里
  • 泉州wap网站制作网站建设怎么样找客户快
  • 用网站做自我介绍ppt移动版wordpress
  • 云南昆明网站建设快速优化wordpress360极速模式打不开
  • 兰州网站seo哪家公司好广东各地最新病例
  • 邯郸建移动网站费用网站的建设内容
  • 郴州文明网网站网址被禁止访问怎么办
  • 东莞外贸网站建设微信管理系统下载