Access accelerometer from jni

I am trying to create an android application in which I need to access the accelerometer in jni .

java code:

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

jni code:

 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"); 

But jobject sensor gets null .

+7
java android jni
source share
1 answer

Sensor.TYPE_ACCELEROMETER is an int constant and has a value of 1 , which should be passed there.

But in any case, these two lines, divided into 9 lines of JNI code, look bad. Wouldn't it be better to leave these source lines of Java code and then just call it from JNI?

0
source share

All Articles