diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | 54b6cfa9a9e5b861a9930af873580d6dc20f773c (patch) | |
tree | 35051494d2af230dce54d6b31c6af8fc24091316 /core/jni/android_debug_JNITest.cpp | |
download | frameworks_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.cpp | 119 |
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 + |