summaryrefslogtreecommitdiffstats
path: root/core/jni/android_debug_JNITest.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
commit54b6cfa9a9e5b861a9930af873580d6dc20f773c (patch)
tree35051494d2af230dce54d6b31c6af8fc24091316 /core/jni/android_debug_JNITest.cpp
downloadframeworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.zip
frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.gz
frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.bz2
Initial Contribution
Diffstat (limited to 'core/jni/android_debug_JNITest.cpp')
-rw-r--r--core/jni/android_debug_JNITest.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/core/jni/android_debug_JNITest.cpp b/core/jni/android_debug_JNITest.cpp
new file mode 100644
index 0000000..f14201e
--- /dev/null
+++ b/core/jni/android_debug_JNITest.cpp
@@ -0,0 +1,119 @@
+/* //device/libs/android_runtime/android_debug_JNITest.cpp
+**
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+#define LOG_TAG "DebugJNI"
+
+#include "jni.h"
+#include "nativehelper/JNIHelp.h"
+#include "utils/Log.h"
+#include "utils/misc.h"
+//#include "android_runtime/AndroidRuntime.h"
+
+namespace android {
+
+/*
+ * Implements:
+ * native int part1(int intArg, double doubleArg, String stringArg,
+ * int[] arrayArg)
+ */
+static jint android_debug_JNITest_part1(JNIEnv* env, jobject object,
+ jint intArg, jdouble doubleArg, jstring stringArg, jobjectArray arrayArg)
+{
+ jclass clazz;
+ jmethodID part2id;
+ jsize arrayLen;
+ jint arrayVal;
+ int result = -2;
+
+ LOGI("JNI test: in part1, intArg=%d, doubleArg=%.3f\n", intArg, doubleArg);
+
+ /* find "int part2(double doubleArg, int fromArray, String stringArg)" */
+ clazz = env->GetObjectClass(object);
+ part2id = env->GetMethodID(clazz,
+ "part2", "(DILjava/lang/String;)I");
+ if (part2id == NULL) {
+ LOGE("JNI test: unable to find part2\n");
+ return -1;
+ }
+
+ /* get the length of the array */
+ arrayLen = env->GetArrayLength(arrayArg);
+ LOGI(" array size is %d\n", arrayLen);
+
+ /*
+ * Get the last element in the array.
+ * Use the Get<type>ArrayElements functions instead if you need access
+ * to multiple elements.
+ */
+ arrayVal = (int) env->GetObjectArrayElement(arrayArg, arrayLen-1);
+ LOGI(" array val is %d\n", arrayVal);
+
+ /* call this->part2 */
+ result = env->CallIntMethod(object, part2id,
+ doubleArg, arrayVal, stringArg);
+
+ return result;
+}
+
+/*
+ * Implements:
+ * private static native int part3(String stringArg);
+ */
+static jint android_debug_JNITest_part3(JNIEnv* env, jclass clazz,
+ jstring stringArg)
+{
+ const char* utfChars;
+ jboolean isCopy;
+
+ LOGI("JNI test: in part3\n");
+
+ utfChars = env->GetStringUTFChars(stringArg, &isCopy);
+
+ LOGI(" String is '%s', isCopy=%d\n", (const char*) utfChars, isCopy);
+
+ env->ReleaseStringUTFChars(stringArg, utfChars);
+
+ return 2000;
+}
+
+/*
+ * JNI registration.
+ */
+static JNINativeMethod gMethods[] = {
+ /* name, signature, funcPtr */
+ { "part1", "(IDLjava/lang/String;[I)I",
+ (void*) android_debug_JNITest_part1 },
+ { "part3", "(Ljava/lang/String;)I",
+ (void*) android_debug_JNITest_part3 },
+};
+int register_android_debug_JNITest(JNIEnv* env)
+{
+ return jniRegisterNativeMethods(env, "android/debug/JNITest",
+ gMethods, NELEM(gMethods));
+}
+
+#if 0
+/* trampoline into C++ */
+extern "C"
+int register_android_debug_JNITest_C(JNIEnv* env)
+{
+ return android::register_android_debug_JNITest(env);
+}
+#endif
+
+}; // namespace android
+