原创 Android HAL 开发 (2)

2012-8-24 16:36 945 9 12 分类: MCU/ 嵌入式

在上一篇文章中,我们看到了如何撰写HAL层的用户硬件驱动程序,我们每也知道,最终该代码会被编译成动态链接库提供给service(jni)使用,那么我们下面来看看service(jni)是如何与HAL通信的。
一般service的jni代码位于framework/base/service/jni/中,我们看看mokoid的ledservice是如何实现的:

 

framework/base/service/jni/com_mokoid_server_LedService.cpp

static const JNINativeMethod gMethods[] = { 
   { "_init",      "()Z",  (void *)mokoid_init },  
   { "_set_on",        "(I)Z", (void *)mokoid_setOn },
   { "_set_off",       "(I)Z", (void *)mokoid_setOff },
 };
  int register_mokoid_server_LedService(JNIEnv* env){
     static const char* const kClassName =
         "com/mokoid/server/LedService";
     jclass clazz;
     /* look up the class */
     clazz = env->FindClass(kClassName);
     if (clazz == NULL) {
         LOGE("Can't find class %s\n", kClassName);
         return -1;
     }     
/* register all the methods */
     if (env->RegisterNatives(clazz, gMethods,
             sizeof(gMethods) / sizeof(gMethods[0])) != JNI_OK)
     {
         LOGE("Failed registering methods for %s\n", kClassName);
         return -1;
     }
      /* fill out the rest of the ID cache */
     return 0;
 }
 上面的函数register_mokoid_server_LedService会把以C/C++实现的接口注册为java可调用的接口,比如mokoid_init为C/C++代码,

而_init则位java可以使用的接口。这个函数会在JNI_OnLoad里面被调用。

阅读更多下文请点击:http://www.hzlitai.com.cn/article/ARM11/SYSTEM/Android_HAL_kaifa2.html 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1634838 2013-10-30 08:43

大家一起学习

用户1658524 2013-5-13 09:15

祝贺立宇泰视频指纹车载驾培终端产品,一次性通过“国家电子计算机外部设备质量监督检验中心”权威部门的检测,测试项目包括:性能检验、环境适应性检验、可靠性检验、电磁兼容性检验、安全检验。 http://www.hzlitai.com.cn/news/1855.html

用户1658524 2012-11-16 10:11

收获很大
相关推荐阅读
用户1634838 2013-11-14 15:05
S3C2440A处理器中文数据手册下载
  较为完整的S3C2440A处理器中文手册压缩包,请点击下载:   s3c2440中文数据手册.rar...
用户1634838 2013-09-06 10:48
常见视频文件的编码方式和封装格式
本文转自:http://www.hzlitai.com.cn/article/ARM11/CPhelp/1802.html   常见的AVI、RMVB、MKV、ASF、WMV、MP4、3G...
用户1634838 2012-10-31 13:41
android usb流程(转载加整理)
原帖地址:http://www.hzlitai.com.cn/article/ARM11/SYSTEM/Android_USB_develop_lx.html    这是关于USB Mas...
用户1634838 2012-09-26 11:12
Android开发环境搭建(v1.2)
本文转自:http://www.hzlitai.com.cn/article/ARM11/example/android.html  第一章 windows 下搭建过程 一.安装 JDK(...
用户1634838 2012-09-18 13:45
Android HAL 开发 (5)
上一章介绍了直接调用Service来操作硬件的方法,如果我们再优化一下结构,通过一个Manager来调用这个Service的方法,可能会更好。这样Service就可以跑在后台,由于这时候servi...
用户1634838 2012-09-14 11:46
Android HAL 开发 (4)
在上一篇文章中,我们看到了如果在java程序中调用C/C++撰写的函数。而且Android的service已经实现了,下面就要看看应用程序如何调用这个service了,这里用两种方法,我们先介绍简...
EE直播间
更多
我要评论
3
9
关闭 站长推荐上一条 /3 下一条