Android aidl在Framework的使用

为何要做这个

我要在framework的PhoneWindowManager.java里面调用LightService.java里面的函数,用来做灯光的提示之类的,为何我要在PhoneWindowManager.java里面加这个呢,这里就不做讨论了,但是直接调用哪些接口是不行的,所以就引进了ipc通信,所以就有了我这篇博客,这其中有个安卓的大神朋友帮我解惑了很多问题

Aidl 和ipc通信之类的我就不讲了,我永远都是实践家,而且我的专长是linux驱动,这个东西也是现在慢慢负责公司产品framework 需要做的才去学习的
要做的文件修改如下:

补丁链接 说明一下是Android 4.4的

Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:   frameworks/base/Android.mkmodified:   frameworks/base/core/java/android/app/ContextImpl.javamodified:   frameworks/base/core/java/android/content/Context.javamodified:   frameworks/base/core/java/android/content/ContextWrapper.javamodified:   frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.javamodified:   frameworks/base/services/java/com/android/server/SystemServer.javamodified:   frameworks/base/test-runner/src/android/test/mock/MockContext.javamodified:   frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.javamodified:   kernel/mediatek/custom/outmodified:   mediatek/misc/ota_scatter.txtUntracked files:(use "git add <file>..." to include in what will be committed)bootable/bootloader/lk/outframeworks/base/core/java/android/content/pm/ILightManager.aidlframeworks/base/core/java/android/content/pm/LightManager.javaframeworks/base/services/java/com/android/server/LightManagerService.java

第一步:加入aidl文件

    frameworks/base/core/java/android/content/pm/ILightManager.aidlframeworks/base/core/java/android/content/pm/LightManager.java //在app里面这个东西是自动生成的,但是这个这个是手动写出来的

第二步:加入service相关的文件还有

frameworks/base/services/java/com/android/server/LightManagerService.java

第三步:加入注册需要的一些代码

    modified:   frameworks/base/Android.mkmodified:   frameworks/base/core/java/android/app/ContextImpl.javamodified:   frameworks/base/core/java/android/content/Context.javamodified:   frameworks/base/core/java/android/content/ContextWrapper.javamodified:   frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.javamodified:   frameworks/base/services/java/com/android/server/SystemServer.javamodified:   frameworks/base/test-runner/src/android/test/mock/MockContext.javamodified:   frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java

第四步:在PhoneWindowManager.java加入调用代码

--- a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -37,6 +37,7 @@ import android.content.IntentFilter;import android.content.ServiceConnection;import android.content.pm.ApplicationInfo;import android.content.pm.ActivityInfo;
+import android.content.pm.LightManager;import android.content.pm.PackageManager;import android.content.pm.ResolveInfo;import android.content.res.CompatibilityInfo;
@@ -252,6 +253,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {IWindowManager mWindowManager;WindowManagerFuncs mWindowManagerFuncs;PowerManager mPowerManager;
+    //AlarmManagerService mAlarmManagerService;//weiqifaIStatusBarService mStatusBarService;boolean mPreloadedRecentApps;final Object mServiceAquireLock = new Object();
@@ -1019,8 +1021,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);-                               
-mBroadcastWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"PhoneWindowManager.mBroadcastWakeLock");mEnableShiftMenuBugReports = "1".equals(SystemProperties.get("ro.debuggable"));
@@ -2256,41 +2256,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {}if(keyCode == KeyEvent.KEYCODE_HDYRODENT){
-            if(down)
-            {
+            if(down){
+                LightManager a = mContext.getLightManager();
+                a.addStudent("12312345678");
+                Log.d(TAG,"--------------------------->mLightManager is null ");Log.d(TAG,"key mode m is pressed!!!!");Intent intent = new Intent("com.key.android.KEY_M_ACTION_DOWM");mContext.sendBroadcast(intent);
-            }
-            else
-            {
+            }else{Log.d(TAG,"key mode m is released!!!!");Intent intent = new Intent("com.key.android.KEY_M_ACTION_UP");mContext.sendBroadcast(intent);}}

第五步:查看日志

D/ADB_SERVICES(  222): read_data=8892
W/LightManagerService(  597): --------------->testLightManagerService<---------------12312345678
D/ADB_SERVICES(  222): max_read_time=0.000265 max_send_time=0.001093 
W/LightManagerService(  597): <--------------->testLightManagerService<--------------->12312345678

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有理智的欲望会走向毁灭,没有欲望的理智会永守清贫

欲望是人类的本性,哥伦布因为它片帆浮海、横渡大洋发现了美州。理性是人类的禀赋,哥白尼因为它仰望星空、冥想终生提出了日心说。在金融市场上没有理智的欲望会走向毁灭,没有欲望的理智会永守清贫。转载于:https://www.cnblogs.com/timlong/p/6509870.html

【Pytorch神经网络实战案例】25 (带数据增强)基于迁移学习识别多种鸟类(CUB-200数据集)

1 数据增强 在目前分类效果最好的EficientNet系列模型中&#xff0c;EfficientNet-B7版本的模型就是使用随机数据增强方法训练而成的。 RandAugment方法也是目前主流的数据增强方法&#xff0c;用RandAugment方法进行训练&#xff0c;会使模型的精度得到提升。 2 RandAugment…

Capture images using V4L2 on Linux

这文章相当好&#xff0c;没有理由不转载 I have always been using OpenCV’s VideoCapture API to capture images from webcam or USB cameras. OpenCV supportsV4L2 and I wanted to use something other than OpenCV’s VideoCapture API so I started digging up about …

diskgenius 数据迁移_U盘格式化后数据恢复免费方法教程

U盘里的数据一般都很重要&#xff0c;比如论文或者办公文件&#xff0c;而有时候我们会被病毒或者误操作把U盘给格式化了&#xff0c;这时候要怎么恢复U盘里的数据呢&#xff0c;只有一个办法&#xff0c;就是用U盘数据恢复软件&#xff0c;但网上此类软件虽然很多&#xff0c;…

结对编程1

Deadline&#xff1a; 2017-3-15 12:00AM&#xff0c;以博客发表日期为准。 评分基准: 按时交 - 有分&#xff0c;检查的项目包括后文的三个方面 题目要求代码提交博文规范晚交 - 0分迟交两周以上 - 倒扣本次作业分数抄袭 - 倒扣本次作业分数题目描述&#xff1a; 不知道大家是…

【Pytorch神经网络理论篇】 34 样本均衡+分类模型常见损失函数

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

我的2015年

2015年的收获 1、结婚了&#xff0c;这是很开心的一件事情&#xff0c;从刚开始的吵吵闹闹&#xff0c;到现在的结婚成家&#xff0c;自己的责任也增加了许多。 2、老婆怀了宝宝&#xff0c;这件事跟结婚的喜悦是一样的&#xff0c;从开始到现在&#xff0c;很多人都在问我&a…

安卓 camera 调用流程_安卓如何做出微信那样的界面仿微信“我”的界面1/5

本系列目标通过安卓编程仿写微信“我”的界面,让大家也能做出类似微信界面.效果图如下:本文目标做出页面顶部的相机部分(其他部分在后续文章中逐步分享).效果图如下:实现方案通过截图工具或者下载一张照相机照片,放到工程的src/main/res/drawable目录下,命名为camera.png添加一…

【Pytorch神经网络实战案例】26 MaskR-CNN内置模型实现目标检测

1 Pytorch中的目标检测内置模型 在torchvision库下的modelsldetecton目录中&#xff0c;找到__int__.py文件。该文件中存放着可以导出的PyTorch内置的目标检测模型。 2 MaskR-CNN内置模型实现目标检测 2.1 代码逻辑简述 将COCO2017数据集上的预训练模型maskrcnm_resnet50_fp…

MTK平台Android4.4 拍照默认图片格式修改

因为摄像头效果要调试&#xff0c;需要把摄像头拍照的照片格式修改了 晚上看了一下资料&#xff0c;这个链接&#xff0c;这个链接比较有用 http://www.cnblogs.com/peterzd/archive/2012/10/11/2695640.html 里面有一段话这样写&#xff1a; ** Environment.getExternalS…

法与时应,度与情合

不能制定脱离实际的法度&#xff0c;否则就是恶法&#xff0c;不可操作&#xff0c;事与愿违。转载于:https://www.cnblogs.com/jcode/p/6514698.html

【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割

1 PyTorch中语义分割的内置模型 在torchvision库下的models\segmentation目录中&#xff0c;找到segmentation.Py文件。该文件中存放着PyTorch内置的语义分割模型。 2 MaskR-CNN内置模型实现语义分割 2.1 代码逻辑简述 将COCO 2017数据集上的预训练模型dceplabv3_resnet101…

怎么查看电脑内存和配置_电脑内存不足处理方法,电脑卡死处理方法。

超过10万人正在关注赶快来关注吧&#xff0c;这里有你想找的热点资讯&#xff0c;这里有你想要的各种资料&#xff0c;还有海量的资源&#xff0c;还在等什么。快来关注&#xff0c;大佬带你开车。电脑系统经常奔溃&#xff0c;软件经常运行不了&#xff0c;开不了机&#xff0…

前端开源项目周报0307

由OpenDigg 出品的前端开源项目周报第十一期来啦。我们的前端开源周报集合了OpenDigg一周来新收录的优质的前端开源项目&#xff0c;方便前端开发人员便捷的找到自己需要的项目工具等。 react-trend 简单优雅的光线 react-progressive-web-app 优化ProgressiveWeb应用开发 pull…

ubuntu下面挂载mtp设备的目录位置

/run/user/1000/gvfs/mtp:host%5Busb%3A003%2C029%5D/内部存储设备/ 我的手机是没有SD卡的&#xff0c;每次都找不到&#xff0c;记录一下这个位置

【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

win7分区软件_神奇的工作室win7旗舰版重装系统连不上网怎么解决

深度技术win7系统下载有的时刻我们的电脑安装、重装了win10操作系统之后有的小伙伴们就发现了自己的电脑连不上网了。对于这种问题小编以为可能是我们的电脑在安装系统的过程中泛起了一些内部组件的冲突或者是由于网卡驱动没有安装好导致的&#xff0c;可以通过重新安装、重装驱…

290. Word Pattern

题目&#xff1a; Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str. Examples: pattern "abba", str "…

【Pytorch神经网络实战案例】28 GitSet模型进行步态与身份识别(CASIA-B数据集)

1 CASIA-B数据集 本例使用的是预处理后的CASIA-B数据集&#xff0c; 数据集下载网址如下。 http&#xff1a;//www.cbsr.ia.ac.cn/china/Gait%20Databases%20cH.asp 该数据集是一个大规模的、多视角的步态库。其中包括124个人&#xff0c;每个人有11个视角(0&#xff0c;18&am…

Mtk camera driver

引用&#xff1a; http://blog.chinaunix.net/uid-26009923-id-3999723.html &#xff11; kd_imgsensor.h 这个文件定义了camera节点的名字 /* CAMERA DRIVER NAME */ #define CAMERA_HW_DEVNAME "kd_camera_hw" 里面还有很多ioctl的幻数&#xff…