JNI小结
来源:互联网 发布:sql怎么导入数据 编辑:程序博客网 时间:2024/06/08 00:29
最近在研究JNI,以前也用过,但是都是非常的简单,只是仅仅的讲数据传下来,用C处理,然后将处理完的数据返回给JAVA层,还没有使用过C来调用JAVA的函数。
比如我要在JNI实现以下这两个简单的功能:
textView = (TextView)findViewById(R.id.test_String);textView.setText("");textView2 = (TextView)findViewById(R.id.test_String_2);textView2.setText("");第一个我想通过JNI的 HelloLoad()函数返回一个字符串变量,然后设置为显示文本,第二个则通过C调用JAVA中的函数,来实现这一功能。
第一个就不多说了,很简单,主要是第二个,需要注意的是findViewById实际上是this.findViewById,也就是说,调用findViewById的对象是传入的obj,而不是myClass = (*env)->FindClass(env,"android/app/Activity");另外,setText参数类型是java/lang/CharSequence,而不是String,虽然String确实可以代替它作为参数。。。。
JNIEXPORT void JNICALL native_setText(JNIEnv *env, jobject obj){jclass myClass = NULL;jmethodID myMethod = 0;jobject testView_2 = NULL;int id = 2131230721;jstring myString = NULL;LOG_Date("0");char mybyte[50] = "I am used in jni,and come from jni,too";myClass = (*env)->FindClass(env,"android/app/Activity");myMethod = (*env)->GetMethodID(env,myClass,"findViewById","(I)Landroid/view/View;");testView_2 = (*env)->CallObjectMethod(env,obj,myMethod,id);myClass = (*env)->FindClass(env,"android/widget/TextView");myString = (*env)->NewStringUTF(env,mybyte);myMethod = (*env)->GetMethodID(env,myClass,"setText","(Ljava/lang/CharSequence;)V");(*env)->CallVoidMethod(env,testView_2,myMethod,myString);}
0 0
- jni小结
- JNI 小结
- JNI小结
- JNI小结
- jni小结
- JNI小结
- jni小结
- JNI 简单使用小结
- JNI技术实践小结
- JNI技术实践小结
- JNI用法小结
- JNI技术实践小结
- JNI应用小结
- JNI技术实践小结
- JNI实践小结
- JNI技术实践小结
- JAVA之JNI小结
- JNI技术小结
- 加入CSDN
- I Think I Need a Houseboat
- 为什么你还一直在穷打工?
- Java swing 之 标签控件 和 图标控件的使用
- POJ 2823 Sliding Window (单调队列)
- JNI小结
- 符号释意字典
- 【NoisyHeart的炼成】Part5:Perlin噪声的HLSL实现
- hdu4763(KMP的应用)
- POJ3278 Catch That Cow(BFS入门)
- textblock 实现滚动条和自动换行
- 莱斯大学Python课程Mini-project#5 - Memory
- 黑马程序员_Java技术博客书写规范
- 大家来写2048 。。。控制台版