Android 新增外设Service添加供app使用
LED Service添加供app使用基本流程
1、需要添加文件在源码中的位置
2、具体需要添加的代码路径:
Kernel:
Dts:
a、kernel/msm-4.4/arch/arm/boot/dts/qcom/xxxx-mtp.dtsi
b、 kernel/msm-4.4/arch/arm/boot/dts/qcom/xxxxx.dtsi
c、 kernel/msm-4.4/arch/arm/boot/dts/qcom/msm-xxxxxl.dtsi
由于控制4A纸、finger和身份证三盏LED灯都是挂载到gpio_B口下,所以需要通过msm-pmxxxxxI.dtsi实现dts的配置操作
Driver:
a、kernel/msm-4.4/drivers/leds/leds-a4Paper.c
b、 kernel/msm-4.4/drivers/leds/leds-finger.c
c、 kernel/msm-4.4/drivers/leds/leds-idCard.c
Hal:
a、hardware/libhardware/modules/led/led.c
b、hardware/libhardware/modules/led/Android.bp
c、hardware/libhardware/include/hardware/led.h
其他还需要将新加的LED hal控制做相关的打包处理 build/make/target/product/full_base.mk和LED 节点文件的权限修改device/qcom/common/rootdir/etc/init.qcom.rc
Frameworks:
JNI:
a、frameworks/base/services/core/jni/com_android_server_LedService.cpp
b、 frameworks/base/services/core/jni/onload.cpp
c、frameworks/base/services/core/jni/Android.bp
Jni的封装添加
Service:
a、frameworks/base/core/java/android/app/LedManager.java
b、frameworks/base/services/core/java/com/android/server/LedService.java
为添加的service文件
c、frameworks/base/core/java/android/app/ILedService.aidl
跨进程调用添加
d、frameworks/base/core/java/android/app/SystemServiceRegistry.java
e、 frameworks/base/core/java/android/content/Context.java
context上下文服务添加
3、代码基本流程
函数hw_get_module依次在目录/system/lib /hw和/vendor/lib/hw中查找一个名称为"<MODULE_ID>.variant.so"的文件,其 中,<MODULE_ID>是一个模块ID
hw_get_module()函数利用HAL层注册信息id,获取相应的模块。
hw_get_module_by_class()函数利用HAL层注册信息id和name,获取相应的模块,主要用于id相同、name不同,即获取相同功能但厂家不同的硬件库。
Android 新增外设Service添加供app使用相关推荐
- Android framwork service添加(manager 远程调service,service jni调native code)
在平常android应用开发中,多数只是调framwork中的API进行application layer的coding,而在系统开发中可能会自己添加系统服务: 系统服务如任何添加,服务如何调nati ...
- Android P HAL层添加HIDL实例(详细实现步骤)
Android P HAL层添加HIDL实例 本文是参照 https://www.jianshu.com/p/b80865c61d8e 教程介绍实现,原理请参考原作者. 本文将介绍如何在P OS上添加 ...
- Android 服务类Service 的详细学习
http://blog.csdn.net/vipzjyno1/article/details/26004831 Android服务类Service学习四大组建 目录(?)[+] 什么是服务 服务有什么 ...
- Android -窗口小部件开发(App Widgets) 3部分
原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...
- 【Android】Java多功能通讯录APP项目设计
❥ 每每学习一门课程,都少不了一门课设布置下来 ❥<移动互联开发>课开了8天,要设计一款App,果然大学即自学,而且一学期好几个 (555 ❥ 下面把最近开发的Android Studio ...
- Android 10 HAL 层添加HIDL实现过程
本文以跑步机为假想场景介绍如何在Android Q(10)上添加HIDL,内容涉及HAL.HIDL进程间通讯.多线程以及串口操作,涵盖了标准的Android硬件服务的主要技术.编写时参考了两篇博客(见 ...
- android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...
本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...
- android 强制退出程序,Android 强制且彻底的退出app
方法1.使用MyApplication.java文件代码如下: package com.ss.zshcloud.utils; import android.app.Activity; import a ...
- Android 9 导航栏添加截图按钮
Android 9 导航栏添加截图按钮 功能:Android 系统底部导航栏(HOME\BACK)位置添加截图按钮,系统设置界面添加截图开关 主要修改工程有SystemUI 和 Settings 注意 ...
最新文章
- MySQL xtrabackup之--databases 勿手贱
- 【干货】移动互联网时代的零售店面转型之道
- 【docker常用镜像命令总结,持续更新中... 建议收藏!】
- C# 汉字转拼音(全拼)
- CentOS7 编译安装golang和rpm安装golang
- 【NOI2001】炮兵阵地
- golang 复制对象的正确做法
- 前端如何实现网络速度测试功能_前端组件单元测试
- Shell——变量详解及注意点
- Visual Studio、.NET Framework、VC++、C#各个版本的对应关系
- VS2010复制项目
- 多个安卓设备投屏到电脑_安卓手机投屏到电脑上的三种方法
- eclipse 中使用字符流复制文件乱码解决
- 【网络编程--UDP、TCP】
- 揭秘如何搭建梦幻西游社交框架
- meanshift聚类算法跟踪原理
- rust大量科技零件_20世纪的黑科技有上万个零件,复杂程度10个人9个看不懂!
- 提高软件开发效率的方法
- Python每日一练——第1天:水仙花数
- Skywalking极简入门