From d2dccb679c5e51984fc7b37a8accc35eab80cfe0 Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Sun, 27 Nov 2011 09:05:43 +0000 Subject: [PATCH] Now the JNI example actually works git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2167 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/jnitest/jni/nativetest.pas | 26 +++++++++++++------ .../com/pascal/jnitest/AndroidJNITest.java | 3 ++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/bindings/android-ndk/examples/jnitest/jni/nativetest.pas b/bindings/android-ndk/examples/jnitest/jni/nativetest.pas index 50851a5b0..6368f3b6a 100755 --- a/bindings/android-ndk/examples/jnitest/jni/nativetest.pas +++ b/bindings/android-ndk/examples/jnitest/jni/nativetest.pas @@ -10,7 +10,7 @@ uses const curClass:JClass=nil; nativeCodeLoaded:JfieldID=nil; -function Java_com_bero_nativetest_Main_stringFromJNI(env:PJNIEnv;this:jobject):jstring; cdecl; +function Java_com_pascal_jnitest_AndroidJNITest_stringFromJNI(env:PJNIEnv;this:jobject):jstring; cdecl; var x:single; begin __android_log_write(ANDROID_LOG_INFO,'nativetest','Java_com_bero_nativetest_Main_stringFromJNI entered'); @@ -20,16 +20,24 @@ begin __android_log_write(ANDROID_LOG_INFO,'nativetest','Java_com_bero_nativetest_Main_stringFromJNI exited'); end; -const NativeMethods:array[0..0] of JNINativeMethod= +function Java_com_pascal_jnitest_AndroidJNITest_intFromJNI(env:PJNIEnv;this:jobject): jint; cdecl; +begin + Result := 8; +end; + +const NativeMethods:array[0..1] of JNINativeMethod= ((name:'stringFromJNI'; signature:'()Ljava/lang/String;'; - fnPtr:@Java_com_bero_nativetest_Main_stringFromJNI;)); + fnPtr:@Java_com_pascal_jnitest_AndroidJNITest_stringFromJNI;), + (name:'intFromJNI'; + signature:'()I'; + fnPtr:@Java_com_pascal_jnitest_AndroidJNITest_intFromJNI;)); function JNI_OnLoad(vm:PJavaVM;reserved:pointer):jint; cdecl; begin curVM:=vm; __android_log_write(ANDROID_LOG_INFO,'nativetest','JNI_OnLoad called'); - __android_log_write(ANDROID_LOG_INFO,'nativetest',PChar(Format('CurVM=%x', [PtrInt(CurVM)]))); +(* __android_log_write(ANDROID_LOG_INFO,'nativetest',PChar(Format('CurVM=%x', [PtrInt(CurVM)]))); if curVM^.GetEnv(curVM,@curEnv,JNI_VERSION_1_6)<>JNI_OK then begin __android_log_write(ANDROID_LOG_FATAL,'nativetest','curVM^.GetEnv failed'); result:=JNI_ERR; @@ -54,7 +62,7 @@ begin __android_log_write(ANDROID_LOG_FATAL,'nativetest','curEnv^.GetFieldID failed'); result:=JNI_ERR; exit; - end; + end;*) result:=JNI_VERSION_1_6; end; @@ -63,9 +71,11 @@ procedure JNI_OnUnload(vm:PJavaVM;reserved:pointer); cdecl; begin end; -exports JNI_OnLoad name 'JNI_OnLoad', - JNI_OnUnload name 'JNI_OnUnload', - Java_com_bero_nativetest_Main_stringFromJNI name 'Java_com_bero_nativetest_Main_stringFromJNI'; +exports + JNI_OnLoad name 'JNI_OnLoad', + JNI_OnUnload name 'JNI_OnUnload', + Java_com_pascal_jnitest_AndroidJNITest_stringFromJNI name 'Java_com_pascal_jnitest_AndroidJNITest_stringFromJNI', + Java_com_pascal_jnitest_AndroidJNITest_intFromJNI name 'Java_com_pascal_jnitest_AndroidJNITest_intFromJNI'; begin end. diff --git a/bindings/android-ndk/examples/jnitest/src/com/pascal/jnitest/AndroidJNITest.java b/bindings/android-ndk/examples/jnitest/src/com/pascal/jnitest/AndroidJNITest.java index 7a8a9be6e..0b981a00b 100755 --- a/bindings/android-ndk/examples/jnitest/src/com/pascal/jnitest/AndroidJNITest.java +++ b/bindings/android-ndk/examples/jnitest/src/com/pascal/jnitest/AndroidJNITest.java @@ -12,11 +12,12 @@ public class AndroidJNITest extends Activity { super.onCreate(savedInstanceState); TextView tv = new TextView(this); - tv.setText( stringFromJNI() ); + tv.setText( Integer.toString(intFromJNI()) ); setContentView(tv); } public native String stringFromJNI(); + public native int intFromJNI(); public long nativeCodeLoaded=0;