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方法" ));
    
  • 相关阅读:
    FZU-Problem 2150 Fire Game
    LeetCode120——Triangle
    Coder-Strike 2014
    AP INVOICES IMPORT API(NOT request)
    NYOJ-277-车牌号
    软件測试方法
    C++中字符数组和字符串string
    【机器学习算法-python实现】PCA 主成分分析、降维
    主题讲座:移动互联网时代的创业机会
    ubuntu环境eclipse配置
  • 原文地址:https://www.cnblogs.com/renhui/p/8491762.html
Copyright © 2011-2022 走看看