转载 Android aidl在Framework的使用

Aidl 和ipc通信之类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.mk
    modified:   frameworks/base/core/java/android/app/ContextImpl.java
    modified:   frameworks/base/core/java/android/content/Context.java
    modified:   frameworks/base/core/java/android/content/ContextWrapper.java
    modified:   frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
    modified:   frameworks/base/services/java/com/android/server/SystemServer.java
    modified:   frameworks/base/test-runner/src/android/test/mock/MockContext.java
    modified:   frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
    modified:   kernel/mediatek/custom/out
    modified:   mediatek/misc/ota_scatter.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    bootable/bootloader/lk/out
    frameworks/base/core/java/android/content/pm/ILightManager.aidl
    frameworks/base/core/java/android/content/pm/LightManager.java
    frameworks/base/services/java/com/android/server/LightManagerService.java

第一步:加入aidl文件

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

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

frameworks/base/services/java/com/android/server/LightManagerService.java
  •  
  • 第三步:加入注册需要的一些代码
    modified:   frameworks/base/Android.mk
    modified:   frameworks/base/core/java/android/app/ContextImpl.java
    modified:   frameworks/base/core/java/android/content/Context.java
    modified:   frameworks/base/core/java/android/content/ContextWrapper.java
    modified:   frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
    modified:   frameworks/base/services/java/com/android/server/SystemServer.java
    modified:   frameworks/base/test-runner/src/android/test/mock/MockContext.java
    modified:   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;//weiqifa
     IStatusBarService 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值