Android中使用jni,ndk的C语言回调方法
来源:互联网 发布:vb怎么随机生成数字 编辑:程序博客网 时间:2024/06/05 03:15
http://blog.sina.com.cn/s/blog_4b650d650100lw43.html
Java代码: //==================================================================== package com.example.hellojni; import android.app.Activity; import android.util.Log; import android.widget.TextView; import android.os.Bundle; public class HelloJni extends Activity { public String mJniMsg; public HelloJni(){} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //System.loadLibrary("hello-jni"); TextView tv = new TextView(this); tv.setText("Eagle,morning!"); setContentView(tv); doCLanguageWork(); } public void myCallbackFunc(String nMsg) { Log.v("EagleTag","back message:"+nMsg); } public native String doCLanguageWork(); static { System.loadLibrary("hello-jni"); } } C语言代码部分: //==================================================================== #include <string.h> #include <jni.h> JNIEXPORT jstring JNICALL jobject gJniObj; jclass gJniClass; jmethodID gJinMethod; void GetInstance(JNIEnv* env, jclass obj_class); void DisplayCallBack(JNIEnv* env); JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_doCLanguageWork(JNIEnv* env, jobject obj) { char tChar[256]; gJniClass=0; gJinMethod=0; gJniClass=(*env)->FindClass(env,"com/example/hellojni/HelloJni"); if(gJniClass==0 || gJniClass==NULL) return (*env)->NewStringUTF(env, "-1"); GetInstance(env,gJniClass); gJinMethod=(*env)->GetMethodID(env,gJniClass,"myCallbackFunc","(Ljava/lang/String;)V"); if(gJinMethod==0 || gJinMethod==NULL) return (*env)->NewStringUTF(env, "-2"); strcpy(tChar,"PROG:10"); (*env)->CallVoidMethod(env,gJniObj,gJinMethod,(*env)->NewStringUTF(env, tChar)); DisplayCallBack(env); return (*env)->NewStringUTF(env, "Eagle is really great!......"); } void GetInstance(JNIEnv* env, jclass obj_class) { jmethodID construction_id = (*env)->GetMethodID(env,obj_class, "<init>", "()V"); gJniObj = (*env)->NewObject(env,obj_class, construction_id); } void DisplayCallBack(JNIEnv* env) { char tChars[256]; strcpy(tChars,"DEBUG:Hello,Eagle"); (*env)->CallVoidMethod(env,gJniObj,gJinMethod,(*env)->NewStringUTF(env, tChars)); }
如果使用了c++,应该用(env)->CallVoidMethod(gJniObj,gJinMethod,(*env)->NewStringUTF(env, tChars));
- Android中使用jni,ndk的C语言回调方法
- Android 中 c 代码回调Java代码的详细步骤(jni、NDK的使用)
- Android ndk 将C语言main方法转为JNI调用
- Android中JNI和NDK的使用
- Android NDK的C/C++代码中利用JNI回调实现字符编码转换
- Android NDK的C/C++代码中利用JNI回调实现字符编码转换
- Android NDK的C/C++代码中利用JNI回调实现字符编码转换
- Android调用C++OpenCV程序的方法(NDK+JNI)
- 关于Android开发中JNI/NDK使用的一点总结
- Android studio中如何使用Ndk(Jni)?
- Android Studio中使用NDK/JNI
- Android Studio中使用NDK/JNI
- 【笔记】Android Studio中使用NDK-JNI
- Android jni 使用C语言调用java中的log方法
- jni使用c语言调用android shell命令方法
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- html弹出框并且页面变灰
- 开发环境搭建 Ubuntu+vmware 上网
- 多线程的那点儿事(之多核编程)
- Android应用与外部元素互动
- 常用命令
- Android中使用jni,ndk的C语言回调方法
- visual studio 2010 中使用严格的C99进行编译
- Android应用程序启动时发生AndroidRuntime : ClassNotFoundException for Activity class的解决方法
- poj 3267(dp)
- windows 下 gvim 的简单配置
- ARCGIS 点抽稀的实现
- php无法用mail函数发送邮件之原因
- 关于java技术不得不说的密码
- jquery之显示多个文本框剩余输入字数