Android HAL 开发 (3)

发布时间:2019-09-21 11:10:47编辑:auto阅读(2089)

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

关键字

上一篇: Python中的编码问题

下一篇: 初识P3P