为 Android 添加 Java 层服务也就是添加自定义的aidl服务到serviceManager 通过
也就是添加自定义的aidl服务到serviceManager 通过ServiceManager.getService取得服务
同前一篇文章类似,此文旨在简单介绍一下如何在 java层添加自己的服务,相关的理论网上已经有很多文章,在此不在详述。
ServiceManager .addService (Context .ALARM_SERVICE , alarm ); 这个操作在系统启动时完成,由 ServiceManager 负责创建服务进程并运行之。所以我们要做的事就是实现一个 java 服务,并将其添加到这里并由系统运行起来,以下是具体实现步骤: 实现自己的 java层 service
1. 在目录 frameworks/base/core/java/android/os中增加自己的 AIDL文件用来申明服务: BelyService.aidl: package android.os; interface IBelyService { /** * int calculateSqu(int value); }
2. 在目录 frameworks/base/services/java/com/android/server增加 service的实现文件: BelyService.java: import android.content.Context; import android.os.IBelyService;
public BelyService(Context context){ super(); } public int calculateSqu(int val){ return val*val; } } 3. 将 java服务添加到 ServiceManager中:
ServiceManager.addService("BelyService", bs);
同样在 package/apps下任意创建一个应用,调用服务的方法如下: import android.os.ServiceManager; import android.os.IBelyService; IBelyService bs = IBelyService.Stub.asInterface(ServiceManager.getService("BelyService")); int ret = bs.calculateSqu(9); 上面我们使用的是 Android内部的方法来获取服务,当然也可以使用公开的 API: context.getSystemService来获取。 谢谢! |
|