`
bcyy
  • 浏览: 1824289 次
文章分类
社区版块
存档分类
最新评论

Android下增加service和对应的AIDL

 
阅读更多

在Android中,应用访问service提供的接口都是通过AIDL(Android Interface Definition Language),可以理解为一种规范,甚至可以粗陋的理解为C语言里面的.h文件,如果你曾经是一名C语言开发者,而且只是使用的话。下面的例子是想增加获取cpu 频率的service及其对应的AIDL,其中并没有实际的读取频率和设置governor的操作,仅仅用于演示如何在framework中增加一个service和AIDL。

1) 增加AIDL接口文件

文件:frameworks/base/core/java/android/os/ICpuFreqService.aidl

package android.os;

import android.os.WorkSource;

/** @hide */

interface ICpuFreqService

{

int getCurGovernor();

int getCurFrequency();

}

2) 在Android.mk中增加ICpuFreqService.aidl接口文件的编译选项

文件:frameworks/base/Android.mk

LOCAL_SRC_FILES += \

……….

core/java/android/os/ICpuFreqService.aidl\

……..

3) 实现CpuFreqService.java

文件:frameworks/base/services/java/com/android/server$ ls CpuFreqService.java

package com.android.server;

import android.os.ICpuFreqService;

class CpuFreqService extendsICpuFreqService.Stub{

static int EnterTimes=0;

public int getCurGovernor()

{

return0x11233;

}

public int getCurFrequency()

{

EnterTimes++;

return (EnterTimes*50);

}

}

4) 在SystemService中注册service

文件:frameworks/base/services/java/com/android/server/SystemServer.java

CpuFreqService cpufreq=null;

………………

Slog.i(TAG, "CpuFreq Manager");

cpufreq = new CpuFreqService();

ServiceManager.addService("cpufreq",cpufreq);

5) 在APP中调用AIDL接口

…………….

import android.os.ServiceManager;

import android.os.ICpuFreqService;

……………...

try {

ICpuFreqService cpuFreq=

ICpuFreqService.Stub.asInterface( ServiceManager.getService("cpufreq"));

setSummaryText("baseband_version",Integer.toString(cpuFreq.getCurGovernor()));

Log.e("Status","Governor=" + Integer.toString(cpuFreq.getCurGovernor()));

Log.e("Status","Freq ="+ Integer.toString(cpuFreq.getCurFrequency()));

} catch (Exception e)

{

}

分享到:
评论

相关推荐

    androidAIDL使用的简单例子

    和博客文章http://blog.163.com/zhou_411424/blog/static/197362156201241541451/...对应改编的例子,实现了在一个APP1中通过AIDL远程调用另一个APP2的Service的函数,即使APP2没有被启动过! 均在eclipse编译运行通过。

    Android AIDLDemo

    Android中2个进程无法直接通信,必须通过Android系统底层间接通信,而跨进程通信有4种方式,分别对应4大组件,其中Service对应的就叫AIDL,即Android Interface Defined Language安卓接口定义语言。这个是一个简单的...

    Android通过AIDL在两个APP之间Service通信

     ①Android Interface definition language(aidl,android接口定义语言),其目的实现跨进程的调用。进程是程序在os中执行的载体,一个程序对应一个进程,不同进程就是指不同程序,aidl实现不同程序之间的调用。  ②...

    android中跨进程通讯的4种方式

    这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content Provider可以跨进程访问其他应用程序中的数据...

    Android高级编程--源代码

    作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层...

    Android开发艺术探索

    4.2.2 Measure Spec和Layout Params的对应关系 / 178 4.3 View的工作流程 / 183 4.3.1 measure过程 / 183 4.3.2 layout过程 / 193 4.3.3 draw过程 / 197 4.4 自定义View / 199 4.4.1 自定义View的分类 ...

    android开发艺术探索高清完整版PDF

    目录 第1章 Activity的生命周期和启动模式 / 1 1.1 Activity的生命周期全面分析 / 1 1.1.1 典型情况下的生命周期分析 / 2 1.1.2 异常情况下的生命周期分析 / 8 1.2 Activity的启动模式 / 16 1.2.1 Activity的...

    深入理解Android:卷I--详细书签版

     邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的 Android企业,负责Framework的开发和...

    详解Android 进程间通信的几种实现方式

    这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content Provider可以跨进程访问其他应用程序中的数据...

    Android中的Service相关全面总结

    1、Service的种类 按运行地点分类: 类别 区别  优点 缺点   应用 ... 服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activit

    DC6008_irda_manager驱动程序和APK_20150914_1424.7z

    4)在/frameworks/base目录,打开Android.mk文件,修改LOCAL_SRC_FILES变量的值,增加 core/java/android/hardware/IIrdaManager.aidl \ 两个接口文件。 5)在 frameworks/base/api/current.txt中添加: ===========...

Global site tag (gtag.js) - Google Analytics