日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android aidl在Framework的使用

發布時間:2023/12/20 Android 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Android aidl在Framework的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。