前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android HAL 开发 (3)

Android HAL 开发 (3)

作者头像
py3study
发布2020-01-06 17:00:29
5450
发布2020-01-06 17:00:29
举报
文章被收录于专栏:python3

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

代码语言:javascript
复制
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了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档