• JNI接口的两种实现方式


    1.利用javac和javah生成头文件,网上已有不少例子。
    2.采用注册的方式生成,这里重点介绍本方法。
     
    (a).声明好需要使用的和对象化的全局变量
    static JavaVM* g_jvm = NULL;
    static jclass g_java_capturer_class = NULL; // VideoCaptureAndroid.class.
    static jclass g_java_encode_class = NULL; // VideoCaptureAndroid.class.
    (b).初始化Java变量
    extern "C" int32_t WINAPI InitCaptureAndroidVM(JavaVM* javaVM, jobject context) {
    TRACE_INFO2("InitCaptureAndroidVM");
    if (javaVM)
    {
    TRACE_INFO2("InitCaptureAndroidVM, init");
    g_jvm = javaVM;
    AttachThreadScoped ats(g_jvm);
    g_context = ats.env()->NewGlobalRef(context);
    }
    else
    {
    if (g_jvm)
    {
    AttachThreadScoped ats(g_jvm);
    if (g_context)
    {
    ats.env()->DeleteGlobalRef(g_context);
    g_context = NULL;
    }
    g_jvm = NULL;
    }
    }
    return 0;
    }
    (c).在实现对象的时候,注册需要使用的ndk接口
    extern "C" int32_t WINAPI InitCaptureObject() {
     
    if (g_jvm) {
    TRACE_INFO2("InitCaptureObject, bEnableHwEncoder="<<bEnableHwEncoder);
     
    AttachThreadScoped ats(g_jvm);
    jclass j_capture_class =
    ats.env()->FindClass("com/anbang/videocapture/VideoCaptureAndroid");
    assert(j_capture_class);
    g_java_capturer_class =
    reinterpret_cast<jclass>(ats.env()->NewGlobalRef(j_capture_class));
    assert(g_java_capturer_class);
     
    TRACE_INFO2("Register VideoCaptureAndroid Native Method");
     
    JNINativeMethod native_methods[] = {
    {"GetContext",
    "()Landroid/content/Context;",
    reinterpret_cast<void*>(&GetContext)},
    {"OnOrientationChanged",
    "(JI)V",
    reinterpret_cast<void*>(&OnOrientationChanged)},
    {"ProvideCameraFrame",
    "([BIIJJ)V",
    reinterpret_cast<void*>(&ProvideCameraFrame)}};
    if (ats.env()->RegisterNatives(g_java_capturer_class,native_methods, 3) != 0)
    assert(false);
    }

    本博客所有内容均为原创,转载请说明出处。欢迎音视频多媒体领域的朋友来人来函交流心得。
  • 相关阅读:
    ios学习-2015-7-9
    ios学习-2015-7-8
    ios学习-2015-7-7
    ios学习-2015-7-6
    ios学习-2015-7-5
    ios学习-2015-7-3
    ios学习-2015-7-2
    Selenium学习笔记之003:Web UI自动化知识点整理 分类: Selenium 2015-07-14 14:19 3人阅读 评论(0) 收藏
    Selenium学习笔记之002:IDE录制和回放 分类: Selenium 2015-07-12 17:13 19人阅读 评论(0) 收藏
    Selenium学习笔记之002:IDE录制和回放
  • 原文地址:https://www.cnblogs.com/liuxt/p/8144679.html
Copyright © 2020-2023  润新知