美文网首页
OpenGL-ES 3.0学习指南(二)——Hello Java

OpenGL-ES 3.0学习指南(二)——Hello Java

作者: 798fe2ac8685 | 来源:发表于2016-11-21 12:09 被阅读101次

    标签(空格分隔): OpenGL-ES

    版本:1
    作者:陈小默
    声明:禁止商业,禁止转载
    

    发布于作业部落简书


    上一篇:OpenGL-ES 3.0学习指南(一)——Hello NDK


    [toc]


    四、JNI回调Java方法

    第三章我们介绍了Java如何调用JNI的方法,本章我们就来学习如何在JNI中回调Java的方法。这里我们仍按照第三章的思路进行编写。本章内容是编写一个Activity,其中有一个TextView,当对TextView进行点击的时候,由JNI记录点击次数,并将结果显示在TextView上。

    4.1 创建native方法

    在这里我们将native方法与Activity写在一个类中

    public class HelloJavaActivity extends AppCompatActivity {
        private TextView tv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_jni_callback);
            tv = (TextView) findViewById(R.id.tv_jni_callback);
    
            tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    callback();
                }
            });
        }
    
        public void setText(int count) {
            tv.setText("" + count);
        }
    
        public native void callback();
    }
    

    4.2 创建源文件

    接下来创建源文件hello-java.cpp,以下代码中所有函数在JNI完全指南系列均有详解。

    #include <jni.h>
    
    static int count;
    
    extern "C"
    JNIEXPORT void JNICALL
    Java_com_github_cccxm_ndk_view_HelloJavaActivity_callback(JNIEnv *env,
                                                              jobject activity) {
        jclass activityClass = env->GetObjectClass(activity);
        jmethodID method = env->GetMethodID(activityClass, "setText", "(I)V");
        env->CallVoidMethod(activity, method, count += 1);
    }
    

    4.3 修改CMakeList.txt文件

    add_library(ndk-lib SHARED
                src/main/cpp/hello-jni.cpp
                src/main/cpp/hello-java.cpp)
    

    4.4 小结

    通过本章的过程,我们能够实现一个点击计数器的效果。在JNI中操作Java对象的方式跟Java中的反射过程类似。


    下一篇:OpenGL-ES 3.0学习指南(三)——JNI操作Bitmap

    相关文章

      网友评论

          本文标题:OpenGL-ES 3.0学习指南(二)——Hello Java

          本文链接:https://www.haomeiwen.com/subject/gdlupttx.html