http://blog.csdn.net/rickbeyond/article/details/7839245
二、 使用JNI在应用程序框架层添加服务访问接口
APP应用不能直接访问HAL层,需要JNI层访问HAL模块并向上提供API接口。可以直接提供接口,但建议最好使用服务的方式提供访问。
我们先看JNI如何访问刚才的HAL模块。
进入源码根目录下的frameworks/base/service/jni目录,新建com_android_server_IICService.cpp,代码如下:
#include "jni.h"
#include "JNIHelp.h"
#include "android_runtime/AndroidRuntime.h"
#include
#include
#include
#include
#include
namespaceandroid
{
/*在硬件抽象层中定义的硬件访问结构体,参考*/
structiic_device_t* iic_device = NULL;
/*通过硬件抽象层定义的硬件访问接口设置硬件寄存器val的值*/
staticvoidiic_setVal(JNIEnv* env, jobject clazz, jstring val, jint slaveAddr, jint subAddr, jint len) {
constchar*str = env->GetStringUTFChars(val, NULL);
LOGI("iic JNI: set value %s to device.&#