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.pswp.cn/news/899469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899469.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Binlog、Redo log、Undo log的區別

一、binlog和redo log的區別 特性binlogredo log記錄對象記錄的是 MySQL 服務器的事務操作,針對的是整個數據庫實例。記錄的是 InnoDB 存儲引擎的數據頁變化,針對的是具體的存儲引擎層面。記錄內容記錄的是事務的邏輯操作,例如 SQL 語句&…

TDengine 中的異常恢復

簡介 本章主要介紹在 TDengine 執行命令過程中發生異常,如何手工終于執行的任務。可以終止連接,線上查詢及終止事務。 如果一個事務 在一個復雜的應用場景中,連接和查詢任務等有可能進入一種錯誤狀態或者耗時過長遲遲無法結束,…

全球化2.0 | ZStack舉辦香港Partner Day,推動AIOS智塔+DeepSeek海外實踐

2025年3月21日,云軸科技ZStack在香港成功舉辦了主題為“ZStack AIOS 智塔與 DeepSeek 私有化方案介紹及企業應用落地實踐”的 Partner Day 活動。此次活動吸引了眾多海外合作伙伴,共同探討 AI Infra 平臺在企業私有化 AI 中的應用與價值閉環。 ZStack CT…

ERP、MES和CRM三大企業系統的詳細介紹及對比分析

以下是關于ERP、MES和CRM三大企業系統的詳細介紹及對比分析: 1. ERP(企業資源計劃,Enterprise Resource Planning) 核心功能: 集成管理:財務、采購、庫存、生產、人力資源等核心業務流程資源優化&#xf…

(二十)Dart 中的多態

Dart 中的多態教程 一、多態的概念 多態是面向對象編程中的一個重要概念。它允許將子類類型的指針賦值給父類類型的指針,同一個函數調用會有不同的執行效果。換句話說,子類的實例可以賦值給父類的引用。多態的核心在于父類定義一個方法不去實現&#x…

【C++初階】第12課—list

文章目錄 1. list的構造2. list迭代器的常見接口2.1 list遍歷的迭代器接口2.2 list修改數據的迭代器接口2.3 list排序、逆序、合并相關操作的成員函數 3. 模擬實現list3.1 模擬實現list的構造3.2 模擬實現list的尾插3.3 模擬實現迭代器iterator3.4 模擬實現list的插入刪除3.5 模…

思維鏈技術(Chain-of-Thought, CoT)

思維鏈(Chain-of-Thought, CoT)是一種通過模擬人類逐步推理過程來提升大型語言模型(LLM)復雜任務表現的技術。其核心思想是讓模型在生成最終答案前,先輸出中間推理步驟,從而增強邏輯性和可解釋性。 1. 基礎…

谷粒微服務高級篇學習筆記整理---異步線程池

多線程回顧 多線程實現的4種方式 1. 繼承 Thread 類 通過繼承 Thread 類并重寫 run() 方法實現多線程。 public class MyThread extends Thread {Overridepublic void run() {System.out.println("線程運行: " Thread.currentThread().getName());} }// 使用 pub…

Windows學習筆記(4)關于MITRE

基本術語 APT(威脅組,高級持續威脅) TTP(攻擊目的技術過程,戰術技術和程序) ATT&CK框架 網站 https://attack.mitre.org/ CAR知識庫 MITRE Engage MITRE D3FEND 網址 https://d3fend.mitre.org/

Go 語言規范學習(2)

文章目錄 VariablesTypesBoolean typesNumeric typesString typesArray typesSlice typesStruct typesPointer typesFunction typesInterface typesBasic interfacesEmbedded interfacesGeneral interfaces【泛型接口】Implementing an interface【實現一個接口】 Map typesCha…

創意 Python 愛心代碼分享

創意 Python 愛心代碼分享 在編程中,用代碼表達創意和情感是一種非常有趣的方式。本文將分享幾段用 Python 編寫的愛心代碼,涵蓋簡單到復雜的實現方式,適合初學者和進階開發者。 1. 簡單愛心圖案 代碼實現 print("\n".join([&qu…

NLP高頻面試題(二十四)——RAG相關內容簡介

檢索增強生成(Retrieval-Augmented Generation,簡稱 RAG)是一種將信息檢索與生成模型相結合的技術,旨在提升大型語言模型的響應準確性、相關性和時效性。通過在生成過程中引入外部知識,RAG 能夠有效彌補 LLM 在知識局限…

Share01-WinCC文件越用越大?

為什么你們的經典WinCC項目在客戶電腦上運行的越來越慢?為什么查詢一個歷史曲線慢的要死?為什么重啟一下電腦畫面都要懷疑人生?具體原因可能多種多樣,但是極大可能是您的數據管理設置欠佳,那么閑話少敘,和小…

練習題:111

目錄 Python題目 題目 題目分析 需求理解 關鍵知識點 實現思路分析 代碼實現 代碼解釋 指定文件路徑和名稱: 定義要寫入的內容: 打開文件并寫入內容: 異常處理: 輸出提示信息: 運行思路 結束語 Python題…

2025_0327_生活記錄

昨晚正在玩手機,凌晨一點二十一分左右手機突然響起來,通知地震波將在5秒后到達海淀區。看著倒計時的數字不斷減小,橙色預警頁面不斷閃動,床猛地搖了幾下。那一刻,我的記憶被拉回了2008年。 上大學之前我在成都生活了1…

基于改進粒子群算法的多目標分布式電源選址定容規劃(附帶Matlab代碼)

通過分析分布式電源對配電網的影響,以有功功率損耗、電壓質量及分布式電源總容量為優化目標,基于模糊理論建立了分布式電源在配電網中選址定容的多目標優化模型,并提出了一種改進粒子群算法進行求解。在算例仿真中,基于IEEE-14標準…

雨云云應用測評!內測持續進行中!

大家好,時隔一個月,我們又見面了! 最近,雨云推出了新型云應用(RCA,Rainyun Cloud Application)。 通過云應用,你可以快速創建可以外部訪問的應用,采用全新的面板和dock…

【研究方向】聯邦|自然語言

聯邦學習 Federated Learning,FL 分布式學習方案。 通過多個參與方(client) 聯邦計算 Federated Computing 聯邦計算(Federated Learning)是一種分布式 機器學習 方法,旨在解決數據隱私保護與數據孤島問題。 圖聯邦 Graph Neural Networks,GNNs 圖聯…

【算法day25】 最長有效括號——給你一個只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最長有效(格式正確且連續)括號子串的長度。

32. 最長有效括號 給你一個只包含 ‘(’ 和 ‘)’ 的字符串,找出最長有效(格式正確且連續)括號子串的長度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二:棧 class Solution { public:int longestValid…

C++編程學習筆記:函數相關特性、引用與編譯流程

目錄 一、函數的缺省參數 (一)全缺省參數 (二)半缺省參數 二、函數重載 (一)參數類型不同 (二)參數個數不同 (三)參數類型順序不同 三、引用相關問題…