zoukankan      html  css  js  c++  java
  • Android NDK学习(四):C/C++层调用JAVA

    一、从C/C++层调用JAVA层代码(无参数调用)

        //在c代码里面调用java代码里面的方法
        // java 反射
        // 1 . 找到java代码的 class文件
        // jclass (*FindClass)(JNIEnv*, const char*);
        jclass dpclazz = (*env)->FindClass(env, "com/renhui/sffmpegandroidstreamer/MainActivity");
        if(dpclazz==0) {
            LOGI("find class error");
            return;
        }
        LOGI("find class ");
    
        //2. 寻找class里面的方法
        // jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
        jmethodID method1 = (*env)->GetMethodID(env,dpclazz,"helloFromJava","()V");
        if(method1==0){
            LOGI("find method1 error");
            return;
        }
        LOGI("find method1 ");
        //3. 调用这个方法
        // void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
        (*env)->CallVoidMethod(env,obj,method1);
    

    二、从C/C++层调用JAVA层代码(传参——字符串)

        //在c代码里面调用java代码里面的方法
        // java 反射
        //1 . 找到java代码的 class文件
        // jclass (*FindClass)(JNIEnv*, const char*);
        jclass dpclazz = (*env)->FindClass(env,"com/renhui/sffmpegandroidstreamer/MainActivity");
        if(dpclazz==0){
            LOGI("find class error");
            return;
        }
        LOGI("find class ");
    
        //2 寻找class里面的方法
        // jmethodID  (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
        jmethodID method1 = (*env)->GetMethodID(env,dpclazz,"helloFromJava","(Ljava/lang/String;)V");
        if(method1==0){
            LOGI("find method1 error");
            return;
        }
        LOGI("find method1 ");
        //3 .调用这个方法
        // void  (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
        (*env)->CallVoidMethod(env,obj,method1, (*env)-> NewStringUTF(env, "这是c反射调用java方法" ));
    
  • 相关阅读:
    vmware 网络连接
    【剑指offer】设置在最小数目的阵列
    动画语音输入和文字输入开关
    Qt 如何处理拖放应用程序参数时,中国
    C#
    dojo的TabContainer添加ContentPane假设closable,怎么不闭幕后予以销毁ContentPane
    剑指XX(游戏10)
    PHP的MySQL扩张:MySQL数据库概述
    所谓策略,我站在旁边看今天 神刻的样子O2O
    两个新事物
  • 原文地址:https://www.cnblogs.com/renhui/p/8491762.html
Copyright © 2011-2022 走看看