From 884b480fbae61caf162a874a730432f4527ff090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Eberhardt?= Date: Thu, 19 Feb 2015 12:48:20 +0100 Subject: [PATCH 1/2] Update org_openni_NativeMethods.cpp List.add(object) returns boolean, not void! See http://stackoverflow.com/a/17297094 Not changing this causes the following error: 02-17 20:06:09.617 W/dalvikvm(4962): JNI WARNING: expected return type 'V' 02-17 20:06:09.617 W/dalvikvm(4962): calling Ljava/util/List;.add (Ljava/lang/Object;)Z 02-17 20:06:09.617 W/dalvikvm(4962): in Lorg/openni/NativeMethods;.oniGetDeviceList:(Ljava/util/List;)I (CallVoidMethodV) with the stack 02-17 20:06:09.632 I/dalvikvm(4962): #06 pc 00002a58 /system/lib/libOpenNI2.jni.so (_JNIEnv::CallVoidMethod(_jobject, _jmethodID, ...)+15) 02-17 20:06:09.632 I/dalvikvm(4962): #07 pc 00003b88 /system/lib/libOpenNI2.jni.so (Java_org_openni_NativeMethods_oniGetDeviceList+179) --- Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp b/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp index 63aa9f20..bcff4198 100644 --- a/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp +++ b/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp @@ -659,7 +659,7 @@ JNIEXPORT jint JNICALL Java_org_openni_NativeMethods_oniGetDeviceList uriObj, vendorObj, nameObj, m_pDeviceInfos[i].usbVendorId, m_pDeviceInfos[i].usbProductId); jclass vectorCls = (*env).FindClass("java/util/List"); jmethodID methodId = (*env).GetMethodID(vectorCls, "add", "(Ljava/lang/Object;)Z"); - (*env).CallVoidMethod(deviceListObj, methodId, deviceInfObj); + (*env).CallBooleanMethod(deviceListObj, methodId, deviceInfObj); } } From bd611e6421ef7966bbd7a83ceca6f5ce3d051756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Eberhardt?= Date: Thu, 19 Feb 2015 14:35:21 +0100 Subject: [PATCH 2/2] Update org_openni_NativeMethods.cpp Found even more CallVoidMethods with )Z in its headers. --- Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp b/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp index bcff4198..c3faff10 100644 --- a/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp +++ b/Wrappers/java/OpenNI.jni/org_openni_NativeMethods.cpp @@ -307,7 +307,7 @@ JNIEXPORT jobject JNICALL Java_org_openni_NativeMethods_oniStreamGetSensorInfo jobject videoModeObj = env->NewObject(videoModeCls, videoModeCtor, videoMode.resolutionX, videoMode.resolutionY, videoMode.fps, (int)videoMode.pixelFormat); - (*env).CallVoidMethod(vectorObj, (*env).GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"), videoModeObj); + (*env).CallBooleanMethod(vectorObj, (*env).GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"), videoModeObj); i++; } jclass sensorInfoCls = (*env).FindClass("org/openni/SensorInfo"); @@ -403,7 +403,7 @@ JNIEXPORT jobject JNICALL Java_org_openni_NativeMethods_oniDeviceGetSensorInfo jobject videoModeObj = env->NewObject(videoModeCls, videoModeCtor, videoMode.resolutionX, videoMode.resolutionY, videoMode.fps, (int)videoMode.pixelFormat); - (*env).CallVoidMethod(vectorObj, (*env).GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"), videoModeObj); + (*env).CallBooleanMethod(vectorObj, (*env).GetMethodID(arrayListCls, "add", "(Ljava/lang/Object;)Z"), videoModeObj); i++; } jclass sensorInfoCls = (*env).FindClass("org/openni/SensorInfo");