您的位置:首页 > 移动开发 > Android开发

Android HAL 开发 (3)

2012-06-13 16:33 148 查看
/article/4442080.html

在上一篇文章中我们分析了jni的led service代码,该代码通过调用led的HAL层代码,实现了mokoid_init, mokoid_setOn, mokoid_setOff三个C/C++接口,但是该接口还无法直接提供给java程序使用,因此还需要一段java代码通过jni调用这些操作接口。

下面就介绍java led service 的实现,代码很简单。

framework/base/service/java/com/mokoid/server/LedService.java

package com.mokoid.server;

import android.util.Config;
import android.util.Log;
import android.content.Context;
import android.os.Binder;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.IBinder;
import mokoid.hardware.ILedService;

public final class LedService extends ILedService.Stub {

static {
System.load("/system/lib/libmokoid_runtime.so");
}

public LedService() {
Log.i("LedService", "Go to get LED Stub...");
_init();
}

/*
* Mokoid LED native methods.
*/
public boolean setOn(int led) {
Log.i("MokoidPlatform", "LED On");
return _set_on(led);
}

public boolean setOff(int led) {
Log.i("MokoidPlatform", "LED Off");
return _set_off(led);
}

private static native boolean _init();
private static native boolean _set_on(int led);
private static native boolean _set_off(int led);
}


[/code]
首先通过System.load("/system/lib/libmokoid_runtime.so"); 装载上一篇文章介绍的使用C/C++编写的库,由于在

libmokoid_runtime.so中已经把mokoid_init,mokoid_setOn, mokoid_setOff分别映射到了_init, _set_on, _set_off,

所以这里可以直接调用这三个接口并且分别被封装到LedService的构造函数,setOn()和setOff()成员函数中,这样

android的应用程序就可以通过这个类来操作led了。

本文出自 “Mobile and Linux Deve..” 博客,请务必保留此出处/article/4442080.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: