Jfloat浮动

时间:2011-06-10 14:59:37

标签: android android-ndk

这是我在Java中的函数定义:

public static native void ToucheBegan( float x, float y, int tapcount );

这是我在CPP中的定义

JNIEXPORT void JNICALL Java_com_android_templateApp_GL2View_ToucheBegan( JNIEnv *env, jfloat x, jfloat y, jint tap_count );

当我记录时:

从Java发送:

125.278595 496.842102 1

在C ++中,我收到:

3.274879 125.278595 1140353994

是否需要在jfloat到float或jint到int之间进行某种转换?

TIA!

2 个答案:

答案 0 :(得分:3)

您忘记了每个JNI函数都有的隐式jobject / jclass参数:

void JNICALL Java_com_android_templateApp_GL2View_ToucheBegan( JNIEnv *env, jobject thiz, jfloat x, jfloat y, jint tap_count );

所以你把'thiz'解释为'x','x'解释为'y','y'解释为'tap_count'。

答案 1 :(得分:0)

无需任何特殊转换。

检查您的C ++日志记录是否按预期执行。一种方法是在C ++函数中为x,y和tapcount分配已知值,并确保按预期记录它们。