[2021.11.9]lighteffect架构优化详细设计文档

news2024/12/26 21:42:59

1 lighteffect系统架构图

图1-1 整改前lighteffect系统架构图

上图为整改前lighteffect系统架构图,存在的问题如下:

(1)代码bug

原因:由于系统中兼容了lighteffect和lighteffect2,写代码时只记了一个,出现代码bug。如:

图1-3 代码bug举例

强制关闭LED时,由于疏忽只杀了lighteffect进程,忘记杀lighteffect2进程。

(2)系统架构问题

从图1-1我们可以看出,整个系统对于LED的控制比较混乱,很容易出现灯效控制混乱的结果。

首先,Hal层存在两个版本的lighteffect。

其次,Framework层存在两个LedManager类来控制灯效。

最后,Apk可直接跨过Framework层调用Hal层的lighteffect控制灯效。

基于以上问题,整改思路有如下几点:

[1]Hal层只使用一个版本lighteffect2

因为lighteffect已经不再维护,且lighteffect2灯效能覆盖lighteffect。

[2]将framework和vendor目录下的LedManager类统一,通过aidl增加接口供apk和系统调用

具体参考<android系统通过aidl增加接口供apk调用>

整改后的lighteffect系统架构图如下:

图1-4 整改后lighteffect系统架构图

整改后的逻辑是,所有处理灯效的请求通过LedManager以进程间通信地方式发送给服务端LedManagerService统一处理。

2 UML类图

(1)aidl定义接口

LedManager.aidl目前开放如下4个接口:

// apk使用

public void setLedStatus(String value)

// 系统使用

public void setNoSuspend()

public void turnOffLed()

public void setLedEnabled(boolean value)

(2)客户端

LedManager

图2-1 LedManager类图

(3)服务端

LedManagerService

图2-2 LedManagerService类图

3 lighteffect2指令功能汇总

指令

灯效

1

lighteffect2 1 1

开机⽩⾊呼吸灯效

2

lighteffect2 2 1

关机红⾊呼吸灯效

3

lighteffect2 3 1

视频通话绿⾊⻓亮灯效

4

lighteffect2 4 1

语⾳输⼊蓝⾊伸缩灯效

5

lighteffect2 5 1

语⾳输⼊蓝⾊流⽔灯效

6

lighteffect2 6 1

智能⾳箱蓝⾊⻓亮灯效

7

lighteffect2 7 1

智能⾳箱蓝⾊呼吸灯效

8

lighteffect2 8 1

待机状态⽩⾊呼吸灯效

9

lighteffect2 9 1

开机状态⽩⾊⻓亮灯效

10

lighteffect2 10 1

错误状态橙⾊⻓亮灯效

11

lighteffect2 11 1

错误状态橙⾊呼吸灯效

12

lighteffect2 12 1

红⾊模式灯效

13

lighteffect2 13 1

⽩⾊模式灯效

14

lighteffect2 14 1

关闭灯效

4 功能测试

操作

期望

测试结果

1

打开指示灯效

->白灯

ok

2

关闭指示灯效

->灯灭

ok

3

打开指示灯效,test->开启远场语音

->白,流水蓝,白

ok

4

关闭指示灯效,test->开启远场语音

->灭,流水蓝,灭

ok

5

待机

->红

ok

6

待机后开机

->红,白

ok

7

关机

->灭

ok

8

关机后开机

->灭,白

概率,关机后开机,白灯过很久才亮

9

打开指示灯效,重启,test->开启远场语音

->白,流水蓝,白

ok

10

关闭指示灯效,重启,test->开启远场语音

->灭,流水蓝,灭

ok

5 UML顺序图

以4(8)"关机后开机"为例画UML顺序图,其余操作类似:

图5-1 "关机后开机"UML顺序图

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

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

相关文章

springboot服务端接口外网远程调试,并实现HTTP服务监听【内网穿透】

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

LCHub:网易副总裁汪源:低代码是革命性技术,或对软件生产带来重大变革

4月25日,网易数帆推出CodeWave智能开发平台。该平台以网易自研的智能大模型为底座,以低代码为开发工具,开发者只需编写少量代码,通过自然语言描述和可视化拖拉拽即可快速开发应用。 据悉,该平台以“智能大模型和全栈低代码”为核心,延续“低门槛,高上限”的特色,实现…

【一起啃书】《机器学习》第五章 神经网络

文章目录 第五章 神经网络5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 全局最小与局部极小5.5 其他常见神经网络5.6 深度学习 第五章 神经网络 5.1 神经元模型 神经网络是由具有适应性简单单元组成的广泛并行互连的网络&#xff0c;它的组织能够模拟生物神经系统…

【网络安全】JWT安全漏洞

jwt安全漏洞 什么是JWTJWT验证流程漏洞介绍方法一&#xff1a;伪造JWT方法二&#xff1a;爆破密钥 什么是JWT Json Web Token(JWT) JSON Web Token&#xff08;JWT&#xff09;是一个非常轻巧的规范。这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息。 JWT是一个有…

北大软件DHR产品,提供一站式、全方位的数字化人力资源管理解决方案

近年来&#xff0c;随着数字化时代的到来&#xff0c;国有企业的人力资源管理方式也需要不断地更新和升级。数字化转型已成为国企人力资源管理的新趋势&#xff0c;加快数字化转型已经成为国企提高核心竞争力的必然选择。 作为北大软件旗下的全新一代人力资源数字化产品&#…

SpringSession

session在负载均衡下丢失的原因&#xff1a; 在使用Nginx做负载均衡时候,session丢失情况,原因在于你登录了一台服务器,但是比如Nginx用的轮询策略,下次访问时候,连接的是另外一台服务器,那么就出现了Session丢失 如果Nginx的负载均衡策略是ip_hash 由于服务器的ip和端口是固…

中国社会科学院大学与美国杜兰大学金融管理硕士——只要出发就会顺利抵达彼岸

新的地方会发生新的故事&#xff0c;新的相遇会碰撞出新的火花。只要出发&#xff0c;我们就会顺利抵达我们想去的远方。就像选择在社科院杜兰大学金融管理硕士项目读研的我们&#xff0c;在这里与来自全国各地的精英同学相聚&#xff0c;共享行业前沿资讯&#xff0c;聆听名师…

【SAS应用统计分析】数据的描述性统计分析

声明&#xff1a;本文知识参考内容来自网络&#xff0c;如有侵权请联系删除。本文还参照了B站up主庄7的课程内容【公开课】数据分析与SAS【15课】 目录 实验原理 描述性统计量 1.反映数据集中趋势的特征量 2.反映数据离散程度的特征量 3.反映数据分布形状的特征量 数据的…

JavaScript经典教程(六)-- JavaScript基础 -- Array常用方法详解

187-Array常用方法详解 1、Array - 数组 &#xff08;1&#xff09;两种声明方式 1、简化 2、以对象形式声明 var a [1 , 2 , 3]; var b new Array(1 , 2 , 3);a是b的简化&#xff0c;都是对象形式&#xff0c;但没有两个一样的对象。 3、用new声明数组时&#xff0c;如…

MySQL知识学习01

1、什么是关系型数据库? 顾名思义&#xff0c;关系型数据库&#xff08;RDBMS&#xff0c;Relational Database Management System&#xff09;就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系&#xff08;一对一、一对多、多对多&am…

【LeetCode:64. 最小路径和 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰+解析功能编写+进阶样例(2)】

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰解析功能编写进阶样例2】 1、概述2、实验环境3、自我总结和提升4、事先声明5、效果展示6、功能代码部分的解析1&#xff09;自定义组合功能函数2&#xff09;数据解析部分3&#xff09;示波器接收部分 7、界面修饰部分1&…

NFT Insider #93:The Sandbox启动Mega City 3土地销售,YGG​与AlphaTitans合作

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

一文带你了解MySQL数据库Innodb_buffer_pool_size

前言 上篇文章介绍了MySQL中的存储引擎层主要负责数据的写入和读取&#xff0c;与底层的文件进行交互。MySQL在5.5 版本以后&#xff0c;MySQL默认存储引擎为 InnoDB&#xff0c;他的主要特性有&#xff1a; DML 操作(增、删、改)遵循 ACID(事务安全表) 模型&#xff0c;支持事…

【Linux从入门到精通】Linux常用基础指令(下)

本篇文章接上篇文章&#xff08;【Linux从入门到精通】Linux常用基础指令&#xff08;上&#xff09;、【Linux从入门到精通】Linux常用基础指令&#xff08;中&#xff09;&#xff09;进行详解。本章的指令相对没有那么常用&#xff0c;难度相对适中。同时也讲述了几个热键。…

编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误?

重写push与replace方法 编程式导航路由跳转到当前路由&#xff08;参数不变&#xff09;&#xff0c;多次执行会抛出NavigatorDuplicated的禁告错误&#xff1f; 路由跳转有俩种形式&#xff1a;声明式导航&#xff0c;编程式导航 声明式导航没有这类问题的&#xff0c;因为…

【精华】WiderPerson数据集介绍及标签转换(YOLO格式)

文章目录 &#xff08;1&#xff09;WiderPerson数据集详情<1> 应用项目<2> 数据集地址<3> 归属单位<4> 详细介绍<5> 数据下载及格式介绍 &#xff08;2&#xff09;WiderPerson转YOLO格式<1> 文件夹结构<2> 数据可视化<3> YO…

全国计算机等级三级网络技术试卷详解(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1.下列关于RPR技术的描述中&#xff0c;错误的是&#xff08;&#xff09;。 A) RPR与FDDI一样使用双环结构 B) 在RPR环中&#xff0c;源节点向目的节点成功发出…

JVM(Java虚拟机)

目录 1.JVM 简介 2. JVM 运行时数据区 2.1程序计数器 2.栈 3.堆 4.方法区 3.类加载 1.loading 2.linking 1.验证 2.准备 3.解析 3.Initializing 4.双亲委派模型 5.JVM垃圾回收机制 1.劣势 2.回收什么 3.垃圾回收具体怎么回收 1.找垃圾 方法: 问题: 2.释放…

4月JAVA面试太难,吃透这份JAVA架构面试笔记后,成功涨到30K

昨天跟一位高级架构师的前辈聊天时&#xff0c;聊到今年的面试。有两个感受&#xff0c;一个是今年面邀的次数比往年要低不少&#xff0c;再一个就是很多面试者准备明显不足。不少候选人能力其实不差&#xff0c;进入团队干活后达到期望不难&#xff0c;但由于没准备或不会表达…