Android HAL 开发 (3)

在上一篇文章中我们分析了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 

 
 
  1. package com.mokoid.server; 
  2.  
  3. import android.util.Config; 
  4. import android.util.Log; 
  5. import android.content.Context; 
  6. import android.os.Binder; 
  7. import android.os.Bundle; 
  8. import android.os.RemoteException; 
  9. import android.os.IBinder; 
  10. import mokoid.hardware.ILedService; 
  11.  
  12. public final class LedService extends ILedService.Stub { 
  13.  
  14.     static { 
  15.         System.load("/system/lib/libmokoid_runtime.so"); 
  16.     } 
  17.  
  18.     public LedService() { 
  19.         Log.i("LedService""Go to get LED Stub..."); 
  20.     _init(); 
  21.     } 
  22.  
  23.     /* 
  24.      * Mokoid LED native methods. 
  25.      */ 
  26.     public boolean setOn(int led) { 
  27.         Log.i("MokoidPlatform""LED On"); 
  28.     return _set_on(led); 
  29.     } 
  30.  
  31.     public boolean setOff(int led) { 
  32.         Log.i("MokoidPlatform""LED Off"); 
  33.     return _set_off(led); 
  34.     } 
  35.  
  36.     private static native boolean _init(); 
  37.     private static native boolean _set_on(int led); 
  38.     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了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值