برای ارسال متغیرهای صحیح و اعشاری به عنوان پارامتر ورودی و خروجی به یک تابع JNI، میتوانید از نوع دادههای معادل در جاوا و C++ استفاده کنید. برای مثال، برای ارسال یک متغیر صحیح از جاوا به C++، میتوانید از نوع
jint
در C++ و
int
در جاوا استفاده کنید. برای ارسال یک متغیر اعشاری، میتوانید از نوع
jdouble
در C++ و
double
در جاوا استفاده کنید.
در زیر یک نمونه کد برای تعریف یک تابع JNI در C++ آورده شده است که دو پارامتر صحیح و یک پارامتر اعشاری را به عنوان ورودی دریافت کرده و یک مقدار اعشاری را به عنوان خروجی برمیگرداند:
#include <jni.h>
extern "C"
JNIEXPORT jdouble JNICALL
Java_com_example_myapplication_MainActivity_myFunction(JNIEnv *env, jobject thiz, jint a, jint b, jdouble c) {
// Your code here
return a + b + c;
}
در جاوا، میتوانید این تابع را با استفاده از کلمه کلیدی
native
تعریف کنید و سپس با فراخوانی آن، پارامترهای مورد نظر را به آن ارسال کنید:
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("mylibrary");
}
public native double myFunction(int a, int b, double c);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
double result = myFunction(1, 2, 3.0);
}
}