同前一篇文章类似,此文旨在简单介绍一下如何在 java层添加自己的服务,相关的理论网上已经有很多文章,在此不在详述。
Java层服务顾名思义即为从 Java层提供的服务,它与 C++层的服务不同之处在于其服务进程的运行由系统( ServiceManager)统一维护。在文件 frameworks /base /services /java /com /android /server /SystemServer.java 中我们可以看到以下代码:
AlarmManagerService alarm = new AlarmManagerService (context );
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:
package com.android.server;
import android.content.Context;
import android.os.IBelyService;
public class BelyService extends IBelyService.Stub {
public BelyService(Context context){
super();
}
public int calculateSqu(int val){
return val*val;
}
}
3. 将 java服务添加到 ServiceManager中:
BelyService bs = new BelyService(context);
ServiceManager.addService("BelyService", bs);
自此,重新编译 Android并运行,我们所创建的服务即可访问,下面是演示如何调用:
同样在 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来获取。
谢谢!
分享到:
相关推荐
支持的功能如下: PDF 文档安全性设置,画文本、图片、形状、条形码到 PDF,提取 PDF 中的文本/图片,高亮/替换 PDF 文本,合并和拆分 PDF,创建和填充表单,添加页眉页脚到 PDF,添加或删除层,重叠 PDF 页面,添加...
支持的功能如下: PDF 文档安全性设置,画文本、图片、形状、条形码到 PDF,提取 PDF 中的文本/图片,高亮/替换 PDF 文本,合并和拆分 PDF,创建和填充表单,添加页眉页脚到 PDF,添加或删除层,重叠 PDF 页面,添加...
受疫情影响,自己工作目前又比较忙,很长时间没有更细博客了,最近看了一下底层服务,尝试着添加了一个底层服务,之前写过一个文章是 Android在java层添加服务进行通讯,对Java层服务感兴趣的同学可以去看一下 Android 7.1...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
1.android 版的opencv-4.5.5 sdk; 2.含有opencv-contrib-4.5.5 扩展模块;...3.可以在android studio 中加载,通过java 层调用,也可以添加so库+头文件的方式在jni 层调用; 4.适用于arm64-v8a架构,即64bit cpu。
� Android 更像一款桌面环境为 Java 的 Linux 操作系统。有助于 Google 实现其 " 随时随地为每个人提供信 息 " 的企业战略。 HTC HTC HTC HTC Dream/G1 Dream/G1 Dream/G1 Dream/G1 具体配置 硬件 3.17 英寸 HVGA ...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
本书最后提供了一个附录,其中列出了Android与Java SE(Java Standard Edition,Java标准版)之间的不同之处。 . 在线资源 本书网站http://pragprog.com/titles/eband提供了以下资源。 本书使用的所有示例...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
基于java开发的安卓Android快递代拿跑腿APP设计毕设源码+数据库.zip 开发环境: Myclipse/Eclipse/Idea都可以(服务器端) + Eclipse/AndroidStudio都可以(手机客户端) + mysql数据库 系统客户端和服务器端架构技术: ...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...