2012-06-30 52 views
7

我正在使用NDK创建像加法,减法,乘法和除法的数学运算演示。Android:从JNI方法获取随机数

我能够使库和从本机代码得到的响应,但结果是不正确的我的意思是随机的静态值。

Calculator.c类

#include <stdio.h> 
#include <jni.h> 

jint 
Java_com_example_jni_calculator_Calculator_add(JNIEnv* env, jint a, jint b) { 
    return (jint)(a + b); 
} 

jint 
Java_com_example_jni_calculator_Calculator_substract(JNIEnv* env, jint a, jint b) { 
    return (jint)(a - b); 
} 

jint 
Java_com_example_jni_calculator_Calculator_multiply(JNIEnv* env, jint a, jint b) { 
    return (jint)(a * b); 
} 

jint 
Java_com_example_jni_calculator_Calculator_devide(JNIEnv* env, jint a, jint b) { 
    return (jint)(a/b); 
} 

Calculator.java类加载库和启动本地方法。

public class Calculator { 

    static { 
     System.loadLibrary("Calculator"); 
    } 

    public native int add(int a, int b); 
    public native int substract(int a, int b); 
    public native int multiply(int a, int b); 
    public native int devide(int a, int b); 
} 

我使用下面的代码来显示结果:

int num1 = Integer.parseInt(txtNumber1.getText().toString().trim()); 
int num2 = Integer.parseInt(txtNumber2.getText().toString().trim()); 
tvResult.setText(String.format("%1$d + %2$d is equals to %3$d", num1, num2, mCalculator.add(num1, num2))); 

输出

enter image description here

+2

http://marakana.com/forums/android/examples/49.html查看本演示。 – RobinHood

+3

我在本地代码的方法中添加了一个额外的参数“jobject”,现在它工作正常。感谢您的链接@RobinHood – Dharmendra

回答

4

您声明非静态方法,不传递给一个参考“jobject” - 这就是为什么你在返回值中得到垃圾。

为了解决这个问题,你必须在本地代码中为“jobject”添加一个额外的参数,在“env”参数之后。