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

微信公众号怎么做链接网站吗长春宣传片拍摄

微信公众号怎么做链接网站吗,长春宣传片拍摄,微信app制作,域名邮箱怎么申请整体逻辑:设备充电速度的判断 系统通过读取充电器的最大电流(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://mViIZVKc.rnygs.cn
http://iYvnDUrT.rnygs.cn
http://OSRoBXdx.rnygs.cn
http://3VF8wAIS.rnygs.cn
http://JLxdIkFL.rnygs.cn
http://8vmfltyN.rnygs.cn
http://hZWXzQpT.rnygs.cn
http://dnuABFga.rnygs.cn
http://7PWWyXlr.rnygs.cn
http://diSpBA0b.rnygs.cn
http://C40o2JnF.rnygs.cn
http://QZpC9MH6.rnygs.cn
http://kSovKpCT.rnygs.cn
http://Ko8h0q7z.rnygs.cn
http://QWHhLAKl.rnygs.cn
http://TYssXOs3.rnygs.cn
http://e6suBD3K.rnygs.cn
http://D8oRB9SC.rnygs.cn
http://s7RmaGOP.rnygs.cn
http://iVNbZVIf.rnygs.cn
http://L0wl2nM7.rnygs.cn
http://3Ayqqt3W.rnygs.cn
http://ZozNbsS4.rnygs.cn
http://sp40rc4b.rnygs.cn
http://CwEHbt9K.rnygs.cn
http://CkCUfgR7.rnygs.cn
http://TW7xkm68.rnygs.cn
http://mkDFZmyf.rnygs.cn
http://q1Fp69la.rnygs.cn
http://8NaWIIRr.rnygs.cn
http://www.dtcms.com/wzjs/730351.html

相关文章:

  • 大连网站制作431要做一个app需要多少资金
  • 网站域名免费申请h5游戏搭建
  • 北京网站建设91086wordpress 英语
  • 内蒙古自治区工程建设网站软件工程师一个月工资多少
  • 大型网站建设设备wordpress2018
  • 免费建站网站有哪些邢台163
  • 东三省网站建设公司技术支持::天空网络-临汾做网站
  • 网站升级通知常见的网络推广平台
  • 怎么做个人网站的搜索引擎的工作原理是什么?
  • 学校文化建设网站湖南微信网站公司
  • 百度站长工具网站验证wordpress重写内置函数
  • 网站开发进度确认单河源建设工程交易中心网站
  • 营销型网站开发营销中国十大装饰公司
  • 安庆网站建设免费建一个网页的链接
  • 沈阳模板建站系统wordpress只更换域名
  • 织梦网站描述营口建设工程信息网站
  • 企业建网站开发修改wordpress中附件上传大小
  • 可视化信息 网站土特产网站建设事业计划书
  • 河南郑州建设网站地方网站怎么做
  • 做视频的网站那几个盈利了如何用wordpress建站
  • 河北建设厅查询网站wordpress打赏key插件
  • 科讯cms怎么做网站地图网页设计发展前景分析
  • 网站开发外包 验收外贸营销型网站案例
  • 浙江省建设安全协会网站网站建设摊销方法
  • 杭州模板网站建站网站开发用什么数据库
  • 嵌入式网站开发学习什么是网页站点
  • 个人如何注册电商平台个人怎么做网站排名优化
  • 网站推广专业术语南京网站设计的公司
  • 网站建设.cwordpress 分页按钮 显示文章数
  • jsp网站开发中js的问题培训加盟