当前位置: 首页 > news >正文

Android14 SystemUI中添加第三方AIDL

由于特殊需求,需要在SystemUI中添加第三方AIDL,去做一些客制化的修改。现在记录一下AIDL添加的过程。
1.将AIDL文件拷贝到frameworks/base/packages/SystemUI/src/下,我要添加的AIDL文件是com/test/myctr/IDevicectr.aidl,添加后的路径是frameworks/base/packages/SystemUI/src/com/test/myctr/IDevicectr.aidl。
2.修改frameworks/base/packages/SystemUI/Android.bp,将AIDL编译到apk里面。
 


android_library {
    name: "SystemUI-core",
    defaults: [
        "SystemUI_compose_defaults",
    ],
    srcs: [
        "src/**/*.kt",
        "src/**/*.java",
        "src/**/I*.aidl",
+        "src/com/test/myctr/IDevicectr.aidl",
        ":ReleaseJavaFiles",
    ],
+        aidl: {
+        local_include_dirs: [
+            "src/com/test/myctr",
+        ],
    },
    product_variables: {
        debuggable: {
            srcs: [":DebugJavaFiles"],
            exclude_srcs: [":ReleaseJavaFiles"],
        },
    },

3.在frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java中去绑定连接AIDL服务。首先导入AIDL的服务类"import com.test.myctr.IDevicectr;"。然后在SystemUIApplication.java中的onCreate()里面调用自定义的initserver()函数初始化服务。下面是初始化服务的函数实现:

+    public void initserver(){//初始化服务
+        Intent intent = new Intent(new Intent("com.test.DevicectrServer"));
+        intent.setPackage("com.android.device_ctr");
+        this.startService(intent);
+        this.bindService(intent, new ServiceConnection()
+        {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service)
+            {
+                apiserver = IYFAPIserver.Stub.asInterface(service);
+                int_flag = true;
+                setDevice();//调用AIDL接口初始化设备
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name)
+            {
+                int_flag = false;
+            }
+        }, BIND_AUTO_CREATE);
+    }

上面函数在连接到服务以后,就可以去调用AIDL的接口去做操作了。
 

http://www.dtcms.com/a/99284.html

相关文章:

  • java.util包之java.util.Collection介绍
  • 并发编程之最小化共享
  • 21_js正则_表单验证
  • Java基于SpringBoot的网络云端日记本系统,附源码+文档说明
  • 若依——基于AI+若依框架的实战项目(实战篇(上))
  • SourceMap原理
  • 打破循环依赖的三大法宝:Spring Boot实战解析
  • 基于三维数字图像相关(DIC)全场应变测量技术的基础设施结构健康监测与安全评估方法研究
  • Msys2安装编译Redis
  • LearnOpenGL-笔记-其六
  • 数据分析概述
  • tauri配置全局变量
  • neo4j中导入csv格式的三元组数据
  • 访问者模式_行为型_GOF23
  • 人工智能入门(2)
  • 心理咨询法律咨询预约咨询微信小程序系统源码独立部署
  • Python函数中的*args与**kwargs详解:灵活处理可变参数
  • LabVIEW 燃气轮机气路故障诊断
  • 算法中常见的求和问题,数学公式
  • 通俗版解释:SecureLink 和 Xshell 的区别与联系
  • 管理系统-接口信息
  • 烽火MR622-KK融合机_海思MV300芯片_1+8G_强刷卡刷固件包
  • 计算机网络 用deepseek帮助整理的复习资料(一)
  • 工程项目管理软件赋能制造工程高效变革
  • VRRP虚拟路由器冗余协议
  • 网络探索之旅:网络原理(第二弹)
  • powershell7.5.0不支持conda的问题
  • 2.pycharm部署Ai - 编程好助手
  • Day17 -实例:利用不同语言不同框架的特征 进行识别
  • Anaconda安装-Ubuntu-Linux