`
rayloo
  • 浏览: 86666 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

为 Android 添加 Java 层服务(二)

阅读更多

同前一篇文章类似,此文旨在简单介绍一下如何在 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来获取。

谢谢!

分享到:
评论

相关推荐

    Android蒙层效果

    在Android开发中,蒙层效果(Mask Effect)是一种常见的视觉设计元素,用于创建半透明覆盖层,常用于引导页、加载界面或者对话框等场景,为用户提供更好的交互体验。本篇将详细介绍Android蒙层效果的实现及其在引导...

    android 以太网 添加设置Ethernet

    在Android系统中添加以太网(Ethernet)功能是一项涉及到网络接口和系统服务集成的重要操作。在Android设备上,以太网通常用于提供稳定的有线网络连接,尤其在没有Wi-Fi或者无线信号不稳定的情况下。以下是对如何在...

    android java 开发can通信demo

    在Android平台上进行Java开发时,CAN(Controller Area Network)通信是一种常见的硬件接口技术,用于设备间的实时数据交换,尤其在汽车电子系统、自动化设备和工业控制等领域应用广泛。本示例"android java 开发can...

    Callback_Androidjni_AndoidJNI层到Java层的调用_android_android回调_

    本示例着重探讨如何从Android JNI层回调到Java层,这对于实现性能优化、利用现有C/C++库或处理特定硬件功能时非常有用。 首先,我们来理解JNI的基本概念。JNI是Java平台的一部分,它提供了一个框架,让Java代码能够...

    Qt Android 调用JAVA

    总结来说,Qt for Android调用Java代码涉及Java层的JNI接口设计、C++的JNI实现以及Qt应用的调用逻辑。通过以上步骤,开发者可以充分利用Qt的C++能力以及Android的Java生态系统,创建出功能丰富的跨平台应用。在实际...

    Android通过Java接口调用OpenCV2.4示例

    本文将深入探讨如何在Android应用中通过Java接口调用OpenCV 2.4版本,以实现将图片转换为灰度图的功能。 首先,我们需要理解OpenCV的基本概念。OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机...

    android SDK中添加自定义api

    这个过程涉及到Java API的设计与JNI(Java Native Interface)的使用,以实现Java层与C/C++层的交互。本文将详细介绍如何在Android SDK中添加自定义API,并通过具体的示例来阐述其步骤和注意事项。 首先,我们来看...

    Android安卓安全加固反调试检测手段(java层+native层)(附代码实现).pdf

    在Android应用开发中,java层的代码如果被逆向分析,将变得一览无遗。为了保护代码不被轻易分析,可以使用代码混淆技术。Android开发中常用的代码混淆工具是Proguard。Proguard不仅可以压缩代码,还可以优化、混淆和...

    Android系统下处理PDF文档的Java库-Spire.PDF for Android via Java_2.11.0.zip

    支持的功能如下: PDF 文档安全性设置,画文本、图片、形状、条形码到 PDF,提取 PDF 中的文本/图片,高亮/替换 PDF 文本,合并和拆分 PDF,创建和填充表单,添加页眉页脚到 PDF,添加或删除层,重叠 PDF 页面,添加...

    android native实现系统服务

    4. 链接库:在Android.mk或CMakeLists.txt中编译本地代码为动态链接库,并在Java层加载。 三、Android系统服务的Native实现 1. 创建Native Service:在Java层创建一个继承自`Service`的类,并声明本地方法。例如,...

    java 与Ubuntu为Android增加硬件抽象层(HAL)模块访问

    这篇教程将指导你在Ubuntu环境下为Android添加一个HAL模块,以访问Linux内核驱动程序,使它们能够相互交互。 首先,我们需要理解HAL的基本结构。在Android的HAL中,硬件模块ID是区分不同硬件服务的标识,例如在示例...

    基于Android与JAVA的音乐在线分类管理与播放系统研究.pdf

    Android应用主要基于Java语言编写,应用框架提供了丰富的API接口权限,允许开发者访问核心系统服务。应用框架层的设计简化了组件间的重用,使得开发者能够充分利用组件功能,并合理地分发组件。Android应用分为核心...

    qt调用JAVA文件示例

    首先,我们需要了解QT的QAndroidJniObject类,它是QT为与Android Java层交互提供的一种工具。QAndroidJniObject允许我们在C++代码中创建和操作Java对象,调用Java方法,从而实现跨语言通信。 1. **环境准备**:确保...

    java与android串口通信示例代码

    在Android上,由于安全和权限限制,通常需要在Android应用层之上建立一个JNI(Java Native Interface)层,以调用C/C++的RXTX库,从而实现串口操作。 2. **Java串口编程**:在Java中,RXTX库提供了一系列的类和方法...

    android Framework层的修改规则

    通过本文的介绍,我们可以看到在Android Framework层进行修改涉及到了JNI层的代码编写、编译配置文件的修改以及Java Framework层的接口声明等多个环节。每一步都需要仔细处理才能确保最终的修改能够顺利地被编译并...

    应用于android系统的基于ArcGis服务的瓦片地图的初级实现(JAVA编写,本人源码)

    本项目主要关注的是如何使用Java语言,在Android平台上实现基于ArcGIS服务的瓦片地图。ArcGIS是由Esri公司提供的一个强大的地理信息系统,它支持地图的创建、管理和分发。在这个初级实现中,我们将探讨以下几个关键...

    Android-一种用Java编写的Android强类型缓存GraphQL客户端

    这意味着在使用Apollo时,开发者可以定义GraphQL查询并将其转换为Android中的数据类,从而确保了代码的类型安全。这种特性使得错误在编译阶段就能被发现,而不是在运行时,提高了代码的可靠性和稳定性。 Apollo的...

    免费Android系统处理PDF文本的Java类库工具-Free Spire.PDF for Android via Java-2.12.0.zip

    支持的功能如下: PDF 文档安全性设置,画文本、图片、形状、条形码到 PDF,提取 PDF 中的文本/图片,高亮/替换 PDF 文本,合并和拆分 PDF,创建和填充表单,添加页眉页脚到 PDF,添加或删除层,重叠 PDF 页面,添加...

    Android+Java面试题

    - Android架构:了解Android系统的分层结构,包括Linux内核、硬件抽象层、系统库、应用程序框架和应用程序。 - Activity生命周期:理解并能绘制各个状态间的转换图,如创建、启动、暂停、恢复、销毁等。 - Intent...

    Android系统添加全局快捷键的方法

    ### Android系统添加全局快捷键的方法 #### 一、Android中键盘驱动及按键映射机制 在深入了解Android系统中如何实现全局快捷键之前,我们需要先理解Android操作系统中的键盘驱动及其工作原理。 ##### 1. Linux...

Global site tag (gtag.js) - Google Analytics