网站飘窗建设合同手表网站建站
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顺序图
