8.1 Android灯光系统_总体框架
1、框架
APP(java语言实现)
-------------------------------
JNI(c++语言实现) 向上提供Java执行c函数的接口 向下访问HAL
-------------------------------
HAL(c或c++语言实现) 封装硬件操作细节
-------------------------------
Driver(c语言实现) 操作硬件
如果JNI是自己写的,那么其接口就只有自己知道,应用程序只能自己写,因此必须使用android现有的JNI,但是HAL和驱动可以自己写,只要HAL能够满足JNI的需求,那么别人写的应用程序就能通过通用的JNI来访问驱动了。
2、android灯光系统框架
App:电池灯App、通知灯App、背光灯App
---------------------
JNI:com_android_server_lights_LightsService.cpp
---------------------
HAL:自己写:HAL_lights.c
---------------------
驱动:自己写:leds_4412.c
怎么写:
(1):看功能
电池灯和通知灯:在硬件上是同一个,颜色、闪烁
背光灯:调节LCD亮度
(2):写驱动
电池灯和通知灯:三个LED(颜色分别是红绿蓝)在一起,驱动操作者3个LED
背光灯:控制输出PWM的占空比
(3):写HAL
把硬件LED再次划分为不同的逻辑灯
JNI需求分析:
(1)获得hw_modult_t结构体
(2)调用get_device,根据不同的name,调用module->methods->open,得到不同的light_device_t结构体
查看源码中的JNI,可以看到name有很多,我们自己写的HAL仅会实现“LIGHT_ID_BACKLIGHT(背光灯)”、“LIGHT_ID_BATTERY“、”LIGHT_ID_NOTIFICATIONS”
HAL提供分析:
(1)实现hw_module_t
(2)实现open函数,根据不同name返回不同的light_device_t结构体,其里面有hw_device_t结构体和set_light函数,因此针对不同的灯需要实现不同的set_light函数,在set_light函数里面操作驱动程序
驱动分析:
(1)操作红绿蓝三个LED,实现亮、灭、闪烁三个功能;
(2)对于背光灯,设置PWM占空比
8.1 Android灯光系统_总体框架的更多相关文章
- Android系统--输入系统(十二)Dispatch线程_总体框架
Android系统--输入系统(十二)Dispatch线程_总体框架 1. Dispatch线程框架 我们知道Dispatch线程是分发之意,那么便可以引入两个问题:1. 发什么;2. 发给谁.这两个 ...
- 10.6 android输入系统_Dispatcher线程_总体框架
图解Android - Android GUI 系统 (5) - Android的Event Input System - 漫天尘沙 - 博客园.htm // 关注里面的Dispatcher处理流程h ...
- Android灯光系统_编写HAL_lights.c【转】
本文转载自:https://blog.csdn.net/qq_33443989/article/details/77074411 1>. 编写灯光系统的HAL层 之 HAL_light.c1&l ...
- 8.6 Android灯光系统_源码分析_背光灯
Change system screen brightness, using android.provider.Settings.System.SCREEN_BRIGHTNESSandroid-er. ...
- 8.5 Android灯光系统_源码分析_通知灯
参考文章(应用程序举例)how to use the LED with Android phonehttp://androidblogger.blogspot.jp/2009/09/tutorial- ...
- 8.4 Android灯光系统_源码分析_电池灯
电池灯的Java代码在batteryservice.java中 电池的状态电量等信息由驱动获得,但驱动不会主动做这些事情,因此肯定有个App调用驱动程序读取电池信息,称这个App为A应用. 还有个Ap ...
- 8.3 Android灯光系统_编写HAL_lights.c
注意在led-classes.c中定义的led_class_attrs[]所建立的文件的属性应该改为0666,否则应用程序无权操作它 同时ledtrig-time.c里面对应新建的那几个delay_o ...
- Android高级_第三方框架Xutils
xutils的功能主要包括有四个部分:(1)布局视图关联:(2)图片下载与缓存:(3)网络请求:(4)数据库: 1. 使用xutils进行视图注入: (1)在控件声明上方添加@ViewInject() ...
- Android核心分析之二十三Andoird GDI之基本原理及其总体框架
Android GDI基本框架 在Android中所涉及的概念和代码最多,最繁杂的就是GDI相关的代码了.但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理. GDI主 ...
随机推荐
- 40.Node.js Web 模块
转自:http://www.runoob.com/nodejs/nodejs-module-system.html 什么是 Web 服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计 ...
- 分享一个关于js原型链的理解
http://www.cnblogs.com/wyaocn/p/5815761.html
- 51Nod 飞行员配对(二分图最大匹配)(匈牙利算法模板题)
第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2名飞行员,其中1名是英国飞行员,另1名是外籍飞行员.在众多的飞行员中, ...
- 【Codeforces Round #456 (Div. 2) C】Perun, Ult!
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] set1 < pair < int,int > > set1;记录关键点->某个人怪物永远打不死了,第 ...
- 洛谷 P1255 数楼梯
P1255 数楼梯 题目描述 楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入输出格式 输入格式: 一个数字,楼梯数. 输出格式: 走的方式几种. 输入 ...
- HDFS简单介绍及用C语言訪问HDFS接口操作实践
一.概述 近年来,大数据技术如火如荼,怎样存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有很广 ...
- Asp中JSON的使用
我对asp全然不懂,因为须要使用json的结构,就研究了一下asp的json的使用,拼接一个json的字符串. 測试用例中使用到了一个lib文件: Json_2.0.3.asp <% ' ' V ...
- 11lession-class 类
python既然也是面向对象编程的语言,自然也就跟java相似,它也有类的概念.今天就简单学习下.看如下代码 #!/usr/bin/python class cl_test: test = 0 def ...
- LinearLayout-控件不显示
今天Mms遇到了一个问题,布局如下 <RelativeLayout android:layout_width="match_par ...
- Dcloud课程8 开心一刻应用如何实现
Dcloud课程8 开心一刻应用如何实现 一.总结 一句话总结:app就是远程调用接口获得数据,我们在后台要做的,就是写一个个让页面获得接口的数据.这里用的是公共笑话接口. 1.ajax返回给页面的h ...