Android 12 LED 定制灯效开发小结

news2024/11/16 15:58:40

文章目录

  • 背景:
  • Android 10 的设备上测试正常
  • Android 12 中目前出现无法闪烁的问题
  • 电量变化广播监听
  • 总结
  • 参考

背景:

在定制的Android 10系统中,通过修改 Framwork 层的代码后,调用标准的接口后,能实现 LED 灯的闪烁灯效,然而在 Android 12中 移植相同的调用接口后却不能实现闪速灯效。其中点亮灯效、呼吸灯效在Android 10 和 Android 12 中都正常。本文总结了在Android 12中如何实现闪烁灯效,使用场景在用户插入和拔出 USB时需要实现闪烁灯效。

问题排查及解决思路如下:

再排查了标准的 Android 10系统没有问题后,我们结合 BSP 驱动层的硬件同事给出的操作节点,看看是否在硬件层支持闪烁灯效。

Android 10 的设备上测试正常

在这里插入图片描述
red green blue中都有delay_off 和 delay_on节点值 闪烁正常。

于时想到了 Android 12 是否硬件支持,先用 ChatGPT来找找答案:
在这里插入图片描述

给出的回答中,说是硬件不支持。于时找到硬件的同事求证,最后给出了用操作的节点的方式来测试一下是否支持,测试情况如下图所示:

Android 12 中目前出现无法闪烁的问题

在这里插入图片描述
在这里插入图片描述

发现这里的LED 灯的 操作节点 之后 消失(delay_off 和delay_on)了。

在这里插入图片描述

于是得出结论:硬件层是支持闪烁灯效的,问题回到了我们的 framework层。

尝试了将灯变化直接设置为 100 ,方便排查是否电量有变化时触发了其他灯效导致闪烁失效。

adb shell dumpsys battery set level 100

电量变化广播监听

在这里插入图片描述

用这个来监听会8秒一次广播。目前是为了排查电量的变化对灯效的影响,最后排除了这一影响。

由于系统开发层排查了半天都没有接口上的调用问题,于是想到了,闪烁灯效的控制,就直接用最接近硬件的方式去操作。简单点说,说是用命令的方式(需要转换为java代码实现(略))去控制 LED 灯的点亮、闪烁、呼吸灯效,简单直接高效可控,最关键的是能实现需求、解决问题。

附:测试详细命令如下:
在这里插入图片描述
测试时发现 这里成功出现闪烁。

目前通过 PowerManagerService.java 中的 参考:

在这里插入图片描述

实现了呼吸灯效,闪烁灯效进一步研究。

// Linux 的 led class驱动

echo 255 > /sys/class/leds/green/brightness
cat /sys/class/leds/green/brightness
cat /sys/class/leds/green/max_brightness

// 闪烁
echo timer > /sys/class/leds/green/trigger
echo 100 > /sys/class/leds/green/delay_on
echo 200 > /sys/class/leds/green/delay_off

// 关闭
echo 0 > /sys/class/leds/green/delay_on

echo 0 > /sys/class/leds/green/brightness

总结

本文主要总结了问题的解决思路,如有疑问,欢迎交流。

参考

Android灯光系统(5)-通知灯_江南才尽,年少无知!的博客-CSDN博客
(系统权限对 /sys/class/leds/blue/ 的权限读写)

Android灯光系统(1)——led_class驱动实现

Android led_class driver_Linux学习之路的博客-CSDN博客

记录:闪烁灯的颜色问题

Android系统开发

LightsService (流程图、关键代码说明 详细)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音旋转验证码分析

旋转验证码类型challenge_code为99996, 拿到的旋转验证码通常都是如下: 待旋转的图片: 旋转的背景图: 加密分析过程 可以参考:https://blog.csdn.net/weixin_38819889/article/details/129727564 旋转的难点在于如何…

英国 Tortoise Media发布2023年全球AI指数排名;美团宣布完成收购光年之外

🦉 AI新闻 🚀 美团宣布完成收购光年之外,加强人工智能竞争力 摘要:美团在公告中宣布于2023年6月29日盘后收购光年之外的全部权益,以加强其在快速增长的人工智能行业中的竞争力。光年之外是中国领先的通用人工智能创新…

【ISO26262】汽车功能安全第一部分:术语

【tommi_wei@163.com】 故障响应时间 fault reaction time 从故障(2.42) 探测到进入安全状态(2.102) 的时间间隔。 故障容错时间间隔 fault tolerant time interval 在危害事件(2.59) 发生前, 系统(2.129) 中一个或多个故障(2.42) 可存在的时间间隔。 功能安全 functio…

C语言之网络高级编程笔记

基于Webserver的工业数据采集项目 html cgi Modbus协议 (应用层) 工具:Modus Slave/Poll wireshark Postman 一、Modbus起源 1.起源: Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。 Modbus通信协议具有多个变种&#xf…

【Matlab】神经网络遗传算法函数极值寻优——非线性函数求极值

目前关于神经网络遗传算法函数极值寻优——非线性函数求极值的博客资源已经不少了,我看了下来源,最初的应该是来自于Matlab中文论坛,论坛出版的《MATLAB神经网络30个案例分析》第4章就是《神经网络遗传算法函数极值寻优——非线性函数极值寻优…

考研算法35天:三元组的最小距离 【双指针,滑动窗口,多路归并】

算法详解 多路归并;多路归并算法从理论到应用(易懂)_留恋单行路的博客-CSDN博客 多路归并就是将多个已经归并排序排好序的数组再进行排序(不一定是通过归并排序)。 算法题目 这道题就是一般做法是先通过排序将三个数组排好然后再进行三指针求最小。但…

4.23 时域微积分特性

时域微分还有个证明方式 2式两边求导即可推出时域微分特性

ElasticSearch学习01——Windows10环境下ES安装经验与踩到的坑

由于对ES基本概念和历史演进在网上随处可查,所以本文在此不做赘述.随意本文直接讲述如何安装使用ES 1.安装JDK ​ ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持。所以要先安装JAVA环境。由于ElasticSearch 5.x 往后依赖于JDK 1.8的,所…

配置Jenkins的slave agent并使用它完成构建任务

上一章,使用单机配置并运行了一个简单的maven项目,并发布到了一个服务器上启动。这一章将要配置一个slave agent,并将上一章的job放到agent上执行。我们agent使用的是ssh的方式 前置步骤 准备两台虚拟机: 192.168.233.32&#…

4.27 功率谱

功率信号能量一定是无穷大的 1处解释,由于上述信号是截断信号,只有-T/2 ~ T/2有有效信号,因此有了1式 能量信号和能量密度构成傅里叶变换对 功率信号和功率密度构成傅里叶变换对 自相关函数和他的能量谱或者功率谱构成傅里叶变换对

Quiz 12: Regular Expressions | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Regular Expressions单选题(1-8)操作题Regular Expressions Python for Everybody 课程简介 Python for Everybody 零基础程序设计(Python 入门) This course aims to teach everyone the …

CPU acceleration status: KVM requires a CPU that supports vmx or svm

关闭虚拟机,选择处理器将虚拟化引擎第一个选项选上,重新打开虚拟机,进行编译打开模拟器。 source build/envsetup.shlunch aosp_x86_64-engemulator

mesh网格数据解析及cesium绘制格网三角网可视化实现

代码实现运行效果 技术术语 Mesh通常指网络拓扑中的网状结构。在计算机网络中,Mesh是指每个节点都与其他节点相连,形成一个无中心的网状结构。Mesh网络常见于分布式计算、传感器网络、互联网等场景中。另外,在3D计算机图形学中,M…

前端web入门-移动web-day08

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 平面转换 平面转换 transform 平面转换 – 平移 平移实现居中效果 平面转换 – 旋转 平面转换 – 改…

最新特斯拉电机控制器4D1实拍

特斯拉发布过自己的扁线电机,最近Ingineerix大神发布了特斯拉最新动力系统的拆机视频,本篇结合之前的Tesla Model 3 SIC 控制器(控制器具体命名不清楚,以最熟悉的一款车型进行描述我们不妨称之为第二代,第一代为单管IG…

Web安全——JavaScript基础(加入案例)

JavaScript基础 一、概述二、嵌入方法1、内嵌式2、外链式3、行内式 三、语句四、注释五、变量六、JavaScript 保留关键字七、JavaScript 作用域1、JavaScript 局部变量2、JavaScript 全局变量 八、数据类型1、判断类型2、数字类型(Number)3、字符串型&am…

满汉楼项目

满汉楼项目 1. 满汉楼介绍 满汉楼是一个综合餐饮管理系统,其主要分为: 人事登记:各部门人员信息登录管理:员工号、姓名、职位、密码菜谱价格:菜谱及价格报表统计:统计销售额成本及库房:名称注…

深度学习优化算法

梯度下降算法 随机梯度下降。随机梯度下降是指每次迭代在训练数据中随机抽取一个数据计算梯度来更新模型得参数。随机梯度下降容易受到噪声干扰,训练时间长,代价函数最终会围绕全局最小值或者局部极小值震荡。批量梯度下降。每次迭代时使用所有的训练数据来计算梯度更新模型的…

vue使用emit控制改变父组件的值,实现子组件的显示与隐藏

vue使用emit控制改变父组件的值,实现子组件的显示与隐藏 需求概述 父组件在提交表单后,弹框进行提示,子组件是一个弹框。 vue版本 v2.x 实现原理 在父组件内建立控制器isShowModal,使用v-if来控制子组件的显示与隐藏。在子组…

Node.js中的process.nextTick与浏览器环境中的nextTick有何不同?

文章目录 nextTick 是一个用于异步操作的函数Node.js中的process.nextTick vs 浏览器环境中的nextTick1. 执行时机2. 微任务队列3. 堆栈溢出风险4. 兼容性 nextTick 是一个用于异步操作的函数 nextTick 是一个用于异步操作的函数,用来在当前执行栈执行完毕后&#…