在上一篇文章中我们分析了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
- packagecom.mokoid.server;
- importandroid.util.Config;
- importandroid.util.Log;
- importandroid.content.Context;
- importandroid.os.Binder;
- importandroid.os.Bundle;
- importandroid.os.RemoteException;
- importandroid.os.IBinder;
- importmokoid.hardware.ILedService;
- publicfinalclassLedServiceextendsILedService.Stub{
- static{
- System.load("/system/lib/libmokoid_runtime.so");
- }
- publicLedService(){
- Log.i("LedService","GotogetLEDStub...");
- _init();
- }
- /*
- *MokoidLEDnativemethods.
- */
- publicbooleansetOn(intled){
- Log.i("MokoidPlatform","LEDOn");
- return_set_on(led);
- }
- publicbooleansetOff(intled){
- Log.i("MokoidPlatform","LEDOff");
- return_set_off(led);
- }
- privatestaticnativeboolean_init();
- privatestaticnativeboolean_set_on(intled);
- privatestaticnativeboolean_set_off(intled);
- }
首先通过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..” 博客,请务必保留此出处http://buaadallas.blog.51cto.com/399160/371558