在这一篇文章中,我们将介绍如何为Android硬件抽象层接口编写JNI方法,以便使得上层的Java应用程序能够使用下层提供的硬件服务。
添加com_android_server_LEDService.cpp:
frameworks/base/services/jni/com_android_server_LEDService.cpp
在com_android_server_LEDService.cpp文件中,实现JNI方法。注意文件的命令方法,com_android_server前缀表示的是包名,表示硬件服务LEDService是放在frameworks/base/services/java目录下的com/android/server目录的,即存在一个命令为com.android.server.LEDService的类。这里,我们暂时略去LEDService类的描述,在下一篇文章中,我们将回到LEDService类来。简单地说,LEDService是一个提供Java接口的硬件访问服务类。
namespace android
{
static led_device_t* led_device;
jint ledOpen(JNIEnv *env, jobject cls)
{
jint err;
hw_module_t* module;
hw_device_t* device;
ALOGI("native ledOpen ...");
/* 1. hw_get_module */
err = hw_get_module("led", (hw_module_t const**)&module);
if (err == 0) {
/* 2. get device : module->methods->open */
err = module->methods->open(module, NULL, &device);