Android系统服务之LightsService实现架构
来源:互联网 发布:c语言随机数 编辑:程序博客网 时间:2024/05/21 11:07
1.Android灯的种类
Android原生设计了8种灯,分别为LCD背光灯、键盘灯、Button灯、电池灯、消息通知灯、重视灯、蓝牙灯、Wifi灯。
这些在LightsService中有定义,定义如下:
static final int LIGHT_ID_BACKLIGHT = 0; //LCD背光灯
static final int LIGHT_ID_KEYBOARD = 1; //键盘灯
static final int LIGHT_ID_BUTTONS = 2; //Button灯
static final int LIGHT_ID_BATTERY = 3; //电池灯
static final int LIGHT_ID_NOTIFICATIONS = 4; //消息通知灯
static final int LIGHT_ID_ATTENTION = 5;//重视灯
static final int LIGHT_ID_BLUETOOTH = 6; //蓝牙灯
static final int LIGHT_ID_WIFI = 7;//Wifi灯
Android目前只用到了前面6种灯,蓝牙和Wifi灯暂未应用。
2.灯系统结构
Android灯系统用于统一控制系统中的各个光源,基本上是一个用于输出控制的系统。
3.灯系统框架
灯系统之下而上,包含了如下框架层次:
3.1驱动程序:特定硬件平台灯系统的驱动程序,可以使用Linux中的LED驱动程序实现。
3.2硬件抽象层,灯系统硬件抽象层接口路径为:
代码路径:hardware/libhardware/include/hardware/lights.h
这是一个Android中标准的硬件模块。
3.3本地类
代码路径:
frameworks/base/services/jni/com_android_server_LightsService.cpp
这个类调用硬件抽象层,也同时提供了JNI的接口。
3.4 JAVA类
代码路径:
frameworks/base/services/java/com/android/server/LightsService.java
LightsService.java通过调用,LightsServiceJNI来实现com.android.server包中的LightsService类。
这个类不是平台的API,被Android系统JAVA框架中的其他一些部分调用(如notificationService等)。
4.灯系统框架图
灯系统的硬件抽象层是一个Android中标准的硬件模块,接口在hardware/libhardware/include/hardware/目录中的lights.h文件中定义。
struct light_state_t {
unsigned int color; /*光源的颜色 */
int flashMode; /* Flash的模式、开关时间 */
int flashOnMS;
int flashOffMS;
int brightnessMode; /*亮度模式 */
};
struct light_device_t {
struct hw_device_t common;
int (*set_light)(struct light_device_t* dev, /*设置光源 */
struct light_state_t const* state);
};
灯系统的主要特点是需要为每一个光源实现一个设备light_device_t。
灯系统模块的函数,也就是Android中标准打开模块的函数hw_module_methods_t中的open()需要通过参数“返回”一个light_device_t类型的指针。
这个指针表示的是一个光设备,在模块的打开函数中指定的名称来确定得到哪一个设备。
灯系统的硬件抽象层实现后,将生成名称为liblights.default.so的动态库,放置在目标文件系统/system/lib/hw目录中。
- Android系统服务之LightsService实现架构
- Android System Server大纲之LightsService
- Android之系统架构
- Android系统之系统架构
- 分布式系统架构之框架化服务
- 系统架构师谈企业应用架构之服务层
- Android系统架构之微服务架构
- Android开发之系统架构
- Android架构实例分析之编写hello驱动的系统硬件服务
- Android之系统服务-WindowManager
- Android 系统服务之 ContentService
- 硬件访问服务4之Android硬件访问服务框架及系统函数全详细实现
- 定制Android系统开发之三——跟着我实现系统服务
- 定制Android系统开发之四——系统服务实现的分析
- 定制Android系统开发之六——系统服务JNI的实现分析
- 定制Android系统开发之七——跟我实现系统服务的JNI调用
- 定制Android系统开发之九——在系统服务中实现回调
- 定制Android系统开发之三——跟着我实现系统服务(测试可用)
- 自学爬虫程序-1、最简单爬虫代码
- 【Leetcode】 Longest Palindromic Substring
- MQ消息队列应用
- DehazeNet读后总结
- hash的基本原理与实现
- Android系统服务之LightsService实现架构
- 开始我的程序员之路
- 去掉字符串前后空白
- 五种方式让你在java中读取properties文件内容不再是难题
- Hive安装
- 以当前时间命名文件并保存实时采集数据
- 编译原理第一个项目——个人所得税PersonalTax
- awk简单使用
- 11【Leetcode】 Container With Most Water