7
我想要製作一個android應用程序,其中我需要訪問jni中的加速度計。從jni訪問加速度計
的Java代碼:
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
JNI代碼:
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
。
問題已解決:) – patrick
_「問題已解決」_對於其他人遇到此問題並不特別有用。解決方案到底是什麼? – Michael
您無法直接通過「Sensor.TYPE_ACCELEROMETER。 」調用getDefaultSensor(),您必須首先創建Sensor.TYPE_ACCELEROMETER的jint類型對象 – patrick