Android系统服务之LightsService实现架构

LightsService:led灯显示管理 前言:LightsService是用来管理手机led指示灯显示; 1.先看有哪些类型的灯: LightsManager.java public abstract class LightsManager { public static final int LIGHT_ID_BACKLIGHT = Type.BACKLIGHT;//背光灯 public static fin... 阅读详情

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 9.0 在rk3326平台上hidl的使用 在hardware/interface路径下 android JNI层调用的hidl服务 "android.hardware.audio.common@2.0", "android.hardware.broadcastradio@1.0", "android.hardware.broadcastradio@1.1", "android.hardware.contexthub@1.0",... 阅读详情

相关推荐

LightsService分析 --- 概述

1 概述 本文重点分析Android系统服务之LightsService(光服务),Android光系统用来控制系统中的各个光源,实际上是一个输出控制系统。 跟其他Android系统中的硬件控制一样,都需要底层驱动的支持以及上层逻辑控制。LED灯的控制分为上层和底层代码两部分, 中间通过JNI来进行交互。Lights系统的结构如图1-1所示: 图 1-1 Lights系统框架图

Jack的博客 5115

Android Light

Light note: Android O 1 LightsService启动 /frameworks/base/services/java/com/android/server/SystemServer.java [SystemServer.java::run()] private void run() { ...... /...

探索未知,成就非凡 2087

HyperLPR3车牌识别-Android-SDK光速部署与使用

基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.快速部署AndroidSDK

tunm 6121

android 通知 灯光,第四章:Android灯光系统(5)-通知灯

上小节我们分析了电池灯的源码,这小节我们将编写通知灯的使用过程。我们知道,当手机接收到短信的时候,他会发出声音,并且这个通知灯会亮起,那么我们怎么实现呢?一般步骤如下:1. getSystemService("NOTIFICATION_SERVICE")2. 构造notfification(1)类别:该次实现类别为通知等(2)其他:颜色,OnMS,OffMS。3. 发出通知以上是我们自己编写AP...

weixin_29832179的博客 635

深入解析EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置

本文深入解析了EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置,详细介绍了六种核心控制模式(如PPM、CSP、CSV、CST)的应用场景及实战技巧。通过EtherCAT和DS402协议的高效配合,实现工业自动化中伺服电机的精准控制,提升设备性能与稳定性。

h0i1j2k3l的博客 1175

ADS 使用教程(一)Workspace, Library and Cell

简要介绍ADS的基本内容

Dirge19的博客 6615

第四章:Android灯光系统(1)-总体框架

通过前面的学习,我们知道 Android系统框架大致如下图所示 总的来说可以分为四个层次 系统框架 1. app应用层:(主要由java语言编写) 2. Framework层:该层主要是实现的是JNI,让APP具有调用C语言的能力(涉及java,c++,c语言) 3. 硬件操控层:一般都是操作硬件的封装库,其实就是相当于llinux系统中的应用层(一般由C语言编写,少数也可以使用C++) 4. ......

江南才尽江南山,年少无知年少狂! 1216

一文读懂世界模型(World Model):AI的“数字大脑”,通往AGI的核心基石

世界模型正成为AI领域的关键技术,它让AI在虚拟环境中模拟物理世界规律并预测行动后果,从而减少现实试错成本。2018年Ha和Schmidhuber提出的VAE+RNN架构奠定基础,2022年后自监督学习推动快速发展。当前世界模型分为潜空间、生成式、强化学习和对象中心四大流派,已在机器人、自动驾驶、工业仿真等领域落地应用。尽管面临长时序预测误差等挑战,未来将向多模态建模、大模型融合等方向发展,成为实现具身智能和通用人工智能的核心基石。

m0_38116472的博客 808

Android System Server大纲之LightsService

Android System Server大纲之LightsService Android闪光灯 Android Led 前言从功能机以来,手机等设备就配备了Led闪光灯,当有未接电话、未读短信和通知等等,Led就会闪烁。和振动器类似,都是给用户一种人机交互的反馈,哪怕这种人机交互是那么的简单。既然它是一个Led,也就是一个硬件,Android系统上层驱动这个硬件的服务就是Lights

FamilyYuan的博客 1万+

构建基于知识图谱的金融监管合规系统

金融行业是一个高度监管的领域,金融机构需要遵守众多复杂的法规和政策。传统的金融监管合规方式往往依赖于人工审查和简单的规则引擎,效率低下且容易出错。构建基于知识图谱的金融监管合规系统的目的在于利用知识图谱强大的知识表示和推理能力,实现对金融业务数据的自动化分析和合规检查,提高监管合规的效率和准确性。本系统的范围涵盖了金融机构的各类业务,如银行业务、证券业务、保险业务等。

AI天才研究院 1168

番外篇 | 关于YOLO11算法的改进点总结

关于YOLO11算法的改进点总结。🌈

小哥谈 2311

Android 搭建系统服务

本文以系统中已经有的LightsService为例,逐步讲解在系统中搭建系统服务的过程。有几个前提需要说明:  1. 由于系统内部就有LightsService这个类(在原生的代码中,它并不是一个真正的服务,只是一个普通类),所以我们无需再建立此类,并且可以根据此类的内容确定需要提供的服务内容。  2. 此处LightsService中需要提供的服务主要是将Light(内部类)的一些操作提供出

我也要去摘星星 653

基于机器学习的电视剧类型点击量数据分析研究

1. 背景介绍 1.1 流媒体平台的兴起与电视剧市场的繁荣 近年来,随着互联网技术的飞速发展,流媒体平台如Netflix、Disney+、腾讯视频等迅速崛起,成为人们观看影视内容的主要渠道。电视剧作为流媒体平台上的重要内容类型,其点击量数据蕴含着丰富的用户偏好和市场趋势信息。

AI天才研究院 1051

LightsService分析 --- 流程分析

2.2 控制流程分析 2.2.1 LightsService服务启动流程 LightsService是从SystemServer中启动的,在运行SystemServer的run()方法时会启动所有必须的系统服务, 这其中就包含用来控制LED灯以及屏幕背光的LightsService,在SystemServer中启动服务: private void startBootstrapService

Jack的博客 1116

FastGPT智能体开发:FastGPT OpenAPI 知识库接口

FastGPT OpenAPI 知识库接口

王国平的博客 323

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lightsService

http://max.book118.com/html/2016/0420/40891588.shtm public static final int LIGHT_ID_BACKLIGHT = 0; public static final int LIGHT_ID_KEYBOARD = 1; public static final int LIGHT_ID_BUTT...

拒绝背八股文 290

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LightsService 灯光控制

简介 LightsService灯光服务提供了LCD背光灯、键盘灯、按键灯、警示灯、电池灯、消息通知灯、蓝牙灯、wifi灯等八种类型灯光; 常用到的地方为:PowerManager、NotificationManager、BatteryService等 API会调用灯光服务控制灯光显示以及颜色、时长; 涉及到代码: 调用api类: frameworks/base/services/core/java/com/android/server/notification/NotificationManagerSer

cczhengv 3464

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LightsService

源码:   base\services\core\java\com\android\server\lights\LightsService.java 功能:   主要对JNI再封装了一层   对上:构造了setBrightness接口函数供调用   对下:调用JNI对应方法 源码分析: LightsService构造函数:   调用JNI的init方法 public Ligh...

weixin_30772105的博客 219

Android灯光系统(硬件访问服务框架)

Android灯光系统(硬件访问服务框架) Java类:LightsService.java LightsService.java通过调用,LightsService JNI来实现com.android.server包中的LightsService类。 这个类不是平台API,被Android系统JAVA框架中的其他一些部分调用。 /* * Copyright (C) 2008 The Androi...

阿路 1924

LightsService分析 --- 问题分析

5 重点问题解析 5.1 添加一个自定义的灯 前面从Java应用层一直到硬件抽象层的分析,都是Android系统中标准的硬件控制流程,在了解了这个流程后, 开发人员就可以根据这个流程来添加制定自己的硬件控制了。下面将分步骤来介绍如何添加一个自定义的灯,以控制一个4G信号强弱的灯led_lte为例。 步骤 1 添加逻辑ID值 首先需要在LightsManager中添加所要灯的ID号,这个I

Jack的博客 1761

LightsService.java

lightservice 主要用于指示灯的闪烁等操作,具体源码 /frameworks/base/services/core/java/com/android/server/lights/LightsService.java 122    public LightsService(Context context) { 123        super(context); 124 125

jason的笔记 2135

LightsService分析 --- 硬件抽象层

4 硬件抽象层代码分析 LightsService的HAL(硬件抽象层)物理逻辑代码主要位于hardware\qcom\display\liblight目录下的lights.c以及 hardware\libhardware\include\hardware目录下的hardware.h和lights.h。 4.1 hardware定义 hardware.h定义了Android系统中通用的硬件

Jack的博客 835

Android13 LightsService LightImpl setBrightness流程分析

调用Light hal的setLight方法,之后就是Hal层的处理了。

liuning1985622的博客 513

LightsService分析 --- 流程分析(转载请删除括号里的内容)

在这些方法的实现中,完成了参数处理后都会调用一个方法:setLightLocked(int color, int mode, int onMS, intoffMS, int brightnessMode)。其中pulse()方法会启动一个延时的Handler任务,用于在设定的时间后停止灯的闪烁。LightsService是从SystemServer中启动的,在运行SystemServer的run()方法时会启动所有必须的系统服务,这是Android系统中当有通知消息的时候来获取并控制指示灯的过程。

xiaowang_lj的博客 309

Android13 LightsService LightsManager getLight流程分析

【代码】Android13 LightsService LightsManager getLight流程分析。

liuning1985622的博客 294
上一篇: SPI协议及其工作原理浅析
下一篇: android编译流程简要分析与使用
沉默的过客
博客等级 码龄13年 60粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值