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方法" ));
    
  • 相关阅读:
    用RBG颜色设置自定义颜色
    Swift UI
    SVN上传代码时代码失败
    coredata中谓词的使用
    Core Data的使用(二)备
    CoreData (四)备
    CoreData (三)备
    CI框架篇之模型篇--直接操作(2)
    CI框架篇之模型篇--初识(1)
    CI框架篇之视图篇--载入(1)
  • 原文地址:https://www.cnblogs.com/renhui/p/8491762.html
Copyright © 2011-2022 走看看