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方法" ));
    
  • 相关阅读:
    基于.NET CORE微服务框架 -浅析如何使用surging
    基于.NET CORE微服务框架 -谈谈surging API网关
    基于.NET CORE微服务框架 -Api网关服务管理
    Navicat Premium 15激活
    MySQL学习笔记(三)
    idea非maven项目引入jar包
    MySQL学习笔记(二)
    MySQL学习笔记(一)
    Windows Terminal官方json文件配置说明
    中南大学图书馆自动登录油猴脚本
  • 原文地址:https://www.cnblogs.com/renhui/p/8491762.html
Copyright © 2011-2022 走看看