2012-06-30 51 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」參數之後。