注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
daisukeyu的个人空间 https://home.eeworld.com.cn/space-uid-410345.html [收藏] [复制] [分享] [RSS]
日志

Android HAL 开发 (3)

已有 990 次阅读2012-9-3 10:56 |个人分类:ARM11|

在上一篇文章中我们分析了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);
 }
首先通过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了。
发表评论 评论 (3 个评论)
回复 sinpo1984 2012-12-4 11:18
这技术资料不错!
回复 小荷才露尖尖角 2013-3-25 10:31
欢迎前来洽谈,合作!
更多详情请查阅立宇泰电子官方网站!
回复 daisukeyu 2014-2-12 10:48
大家一起学习~~

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章