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)    

 {      

 }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值