展会信息港展会大全

Android下增加service和对应的AIDL
来源:互联网   发布日期:2016-01-13 21:51:46   浏览:1755次  

导读: 在Android中,应用访问service提供的接口都是通过AIDL(Android Interface Definition Language),可以理解为一种规范,甚至可以粗陋的理解为C语言里面的.h文件,如果你曾经是一名C语言开发者,而且只是使......

在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

{

intgetCurGovernor();

intgetCurFrequency();

}

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 intgetCurGovernor()

{

return0x11233;

}

public intgetCurFrequency()

{

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)

{

}

赞助本站

人工智能实验室

相关热词: service AIDL

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港