付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AndroidSensorJNI 课程名称AndroidSensorJNI实现课程类别:客户培训课程课程目JNI的介绍和作SensorHAL层简Android如 SensorHAL对象:客讲师:应用软件工程
数教学法:面2主要内
AndroidAndroidSensorHAL3JNI
JavaNativeInterface(JNI)是Java提供的一个很重要的特性。它使得用诸如C/C++等语言编写的代码可以与运行于Java虚拟机(JVM)中的Java代码集成。 4JNI
5JNI
6JNI
。2JNI支持一个“调用接口”(invocationinterface),它允许你把一个JVM嵌入到本地程序中。本地程序可以一个实现了JVM的本地库,然后使用“调用7JNI
8JNI
什么场合下应该使用当用JAVA程序连接本地数据库时,使用JDBC提供的APIJAVA程序可以使用分布式对象技术,如JAVAIDLAPI 9JNI
主要内
AndroidAndroidSensorHALAndroid中使用
Android中使用
Android中使用
的Java工程,并添加一个com.example. /*Anativemethodthatisimplementedby o-jni'nativelibrary,whichiswiththis nativeString Android中使用
#include<string.h>#include<jni.h> oJni_stringFromJNI(JNIEnv*jobjectthiz)return(*env)->NewStringUTF(env, ofromJNI} Android中使用
名规则:Java代码中的 需要添加native关键字;Native的对应函数名要以“Java_”开头,后“_”分割,在package名中的“.”也要改为“_”。此外,关于函数的参数和返回值也有相应的规则。对于Java中的基本类型如int、double、char等,在Native端都有相对应的类型来表示,如jint、jdouble、jchar等;其他的对象类型则统统由jobject来表示(String是个例外,由于其使用广泛,故在Native代码中有jstring这个类型来表示,正如在上例中返回值String对应到Native代码中的返回值jstring)。而对于Java中的数组,在Native中由jarray对应,具体到基本类型和一般对象类型的数组则有jintArray等和jobjectArray分别对应(String数组在这里没有例外,同样用jobjectArray表示)。还有一点需要注意的是,在JNI的Native函数中,其前两个参数JNIEnv*和jobject是必需的——前者是一个JNIEnv结构体的指针,这个结构体中定义了很多JNI的接JNI函数的Java对象,有点类似于C++中的this指针。在上述两个参数之后,还 数没有参数,则Native的对应函数只有类型为JNIEnv*和jobject的两个参数。Android中使用
当然,要使用JNI函数,还需要先加载Native代码编译出来的动态库文件(static o-} 际上是Linux系统——上例中,实际加载的库文件应为“lib Android中使用
TextViewtv=newTextView(this);tv.setText(stringFromJNI());Android中使用
的系统功能则是通过在其上的ApplicationFramework以JavaAPI ApplicationFramework提供的API o的类,代码如下:packagecom.example. publicclassSay o{publicStringsay oFromJava(StringnativeMsg){Stringstr=nativeMsg+"ButshowninJava!";returnstr;}}Android中使用
o类中 一般来说,要在Native代码 ,并提供了FindClass接口,根据类的完整的包路径即可得到其jclass2根据jclassjobjectJava中,创建一个新对象只jobject中的成员变量或方法 对象的方法是先得到方法的Method,然后使用Call<Type>Method接口调用,这里Type对应相应方法的返回值 成员变量的步骤一样:首先GetFieldID得到成员变量的ID,然后Get/Set<Type>Field读/写变量值。Android中使用
oFromJava(JNIEnv*env){jstringstr=NULL;jclassclz=(*env)->FindClass(env, jmethodIDctor=(*env)->GetMethodID(env,clz,jobjectobj=(*env)->NewObject(env,clz,ctor);jmethodIDmid=(*env)->GetMethodID(env,clz, if(mid){jstringjmsg=(*env)->NewStringUTF(env,"I'min}
str=(*env)->CallObjectMethod(env,obj,mid,return}Android中使用
GetMethodID的第三个参数是方法名(对于构造函数一律用“<init>”表 构造相应的“签名”,请参考JNI的相关文档。建的对象实例被称为“LocalReference”,它仅在创建它的Native代码作用域“GlobalReference”——需要注意的是,当GlobalReference不再使用后,需 主要内
AndroidAndroidSensorHALAndroidSensorHAL层简
AndroidSensorHAL层简
#define1#define234567 AndroidSensorHAL层接
structsensors_module_t{structhw_module_tcommon;int(*get_sensors_list)(structsensors_module_t*module,structsensor_tconst**list);AndroidSensorHAL层简
struct{constconstAndroidSensorHAL层简
structsensors_poll_device_tstructhw_device_tint(*activate)(structsensors_poll_device_t*dev,inthandle,intenabled);int(*setDelay)(structsensors_poll_device_t*dev,inthandle,int64_tns);int(*poll)(structsensors_poll_device_tsensors_event_t*data,intAndroidSensorHAL层简SensorHAL
主要内
AndroidAndroidSensorHALAndroidAndroidSensorFrameworkAndroidSensorFramework
AndroidSensorHAL AndroidSensorFramework
AndroidSensorFramework
AndroidSensorFramework
AndroidSensorFramework
4SensorDevice负 AndroidSensorFramework
AndroidSensorFramework
AndroidSensorFramework
端与服务端之间的通信只有接接口,只有一个管道传数据。那么数据的形AndroidSensorFramework
typedefstructsensors_event_tunion
relative_humidity; }AndroidSensorFramework
typedefstructASensorEvent{int32_tversion;int32_tsensor;int32_ttype; int64_ttimestamp;union{
} AndroidSensorFramework
在JNI层,只会将结构体数据中一部分的信息传到JAVAsensors_data_poll(JNIEnv*env,jclassclazz,jintnativeQueue,jfloatArrayvalues,jintArraystatus,jlongArraytimestamp){sp<SensorEventQueue>if(queue==0)return-1;status_tr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脑卒中康复护理措施培训
- 不遵守信访协议书追回
- 大连石油厂搬迁协议书文件
- 心血管外科主动脉夹层术后管理方案
- 财务管理工作规范
- 预防医学科接种程序规范
- 急性胰腺炎的康复训练
- 2026河南省烟草专卖局(公司)高校毕业生招聘190人备考题库及参考答案详解(基础题)
- 2026甘肃甘南州舟曲县城关镇社区卫生服务中心招聘3人备考题库带答案详解(能力提升)
- 2026国家统计局兵团第十四师调查队招聘1人备考题库(新疆)附答案详解(培优b卷)
- 空调人员安全培训课件
- 志愿服务与社区建设:共建共治共享的基层治理新实践
- 媛颂培训课件
- 器械临床试验中的方案偏离管理与纠正
- 提高跑步速度课件
- 第5课《和大家在一起》(名师课件)
- 2026年河南建筑职业技术学院单招职业技能测试必刷测试卷汇编
- 《做孝顺子女》课件
- 厂房建设与租赁合同标准范例
- 2026蓝色简约风学习成果汇报模板
- 广东烟草专卖局招聘考试真题2025
评论
0/150
提交评论