首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从jni访问加速度计

从jni访问加速度计
EN

Stack Overflow用户
提问于 2015-05-11 08:10:44
回答 1查看 262关注 0票数 7

我正在尝试制作一个android应用程序,在这个应用程序中我需要访问jni中的加速度计。

java代码:

代码语言:javascript
复制
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);         
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

jni代码:

代码语言:javascript
复制
jclass cls_context = env->FindClass("android/content/Context");
jfieldID tService = env->GetStaticFieldID(cls_context, "SENSOR_SERVICE","Ljava/lang/String;");
jstring jstr = (jstring)env->GetStaticObjectField(cls_context, tService);

//getSystemService(SENSOR_SERVICE);
jclass cls_act = env->GetObjectClass(activity);
jmethodID GetSystemService = env->GetMethodID(cls_act,"getSystemService","(Ljava/lang/String;)Ljava/lang/Object;");
jobject systemservice = env->CallObjectMethod(activity,GetSystemService,jstr);

//getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
jclass sensormanager = env->GetObjectClass(systemservice);
jmethodID getdefaultsensor = env->GetMethodID(sensormanager, "getDefaultSensor", "(I)Landroid/hardware/Sensor;");
jobject sensor = env->CallObjectMethod(systemservice, getdefaultsensor, "Sensor.TYPE__ACCELEROMETER");

但是jobject sensor得到了null

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 17:54:41

Sensor.TYPE_ACCELEROMETER是int类型的内联常量,其值为1,应该传递到那里。

但是不管怎么说,这2行分拆成9行JNI代码看起来很糟糕。最好还是保留原来的Java代码行,然后从JNI调用它好吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30162571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档