android jni 开发callback 传递参数_CarEye 官方博客的博客-程序员信息网_callback jni

技术标签: 流媒体  开源流媒体平台和开源车辆管理平台  

    在android JNI开发中我们经常要在C中调用JAVA的程序,比如设计一个回调函数实现java与C之间的数据传递。

在设计car-eye-player android版本的时候遇到这样的问题,记录一下。其中C中的callback调用代码如下:

void callback(int channel)
{
JNIEnv *env;
   int mNeedDetach = -1;
   //获取当前native线程是否有没有被附加到jvm环境中
   int getEnvStat = (*g_VM)->GetEnv(g_VM, (void **) &env,JNI_VERSION_1_6);
   if (getEnvStat == JNI_EDETACHED) {
       //如果没有, 主动附加到jvm环境中,获取到env
       if ((*g_VM)->AttachCurrentThread(g_VM, &env, NULL) != 0) {
           return;
       }
       mNeedDetach = JNI_TRUE;
   }
   //通过全局变量g_obj 获取到要回调的类
   jclass javaClass = (*env)->GetObjectClass(env, g_obj);
   if (javaClass == 0) {
      // LOGI("Unable to find class");
       (*g_VM)->DetachCurrentThread(g_VM);
       return;
   }
   //获取要回调的方法ID
   jmethodID javaCallbackId = (*env)->GetMethodID(env, javaClass,
                                                  "CarEyeCallBack", "(III)V");
   if (javaCallbackId == NULL) {
       //LOGI("Unable to find method:onProgressCallBack");
       return;
   }
   (*env)->CallIntMethod(env, g_obj, javaCallbackId,0,channel);
   //释放当前线程
if(mNeedDetach) {
(*g_VM)->DetachCurrentThread(g_VM);
}
   env = NULL;
}

CarEyeCallBack 是我们需要调用的函数。

private   void onSourceCallBack(int _channelPtr int _channelId, int _channelPtr)

{

    。。。。。

}

实现了callback函数调用。

有关详细代码下载可访问:https://github.com/Car-eye-team 技术交流QQ群:590411159





版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Car_eye/article/details/79767256

智能推荐

android tcp socket框架_PHP分布式结构RPC介绍以及手写RPC框架_weixin_39618956的博客-程序员信息网

分布式解决什么问题?举个例子:当网站有10万个访问,已经没法处理这么多访问请求,通常,我们可以提高服务器的配置,其次我们还可以添加服务器来分流处理,如果一台机器只能处理6万个请求,那么我们在加一台服务器,把请求分配到两台,那么就可以处理10万请求。加服务器有两种方式实现,一种是用负载均衡的方式,另一种用分布式的方式,负载均衡其实就是把原来的代码复制到另一台服务器,两台服务器的代码是一样的,这也叫水...

java使用easypoi--导入,导出_枯枫叶的博客-程序员信息网

package com.sport.sporttrailwalkadminserver.common.utils;import cn.afterturn.easypoi.excel.ExcelExportUtil;import cn.afterturn.easypoi.excel.ExcelImportUtil;import cn.afterturn.easypoi.excel.entity.ExportParams;import cn.afterturn.easypoi.excel.entit.

前端:跨域问题的根本解决方案CORS_念去去千里烟波的博客-程序员信息网_前端cors解决跨域

介绍关于跨域问题有很多的解决方案,这里我们总结一下目前最通用最强大的解决方案:CORS。W3C 的 Web 工作组推荐了一种新的机制,即跨域资源共享(Cross-origin Resource Sharing),简称CORS。其实这个机制就是实现了跨站访问控制,使得安全地进行跨站数据传输成为可能。跨源资源共享标准( cross-origin sharing standard) 使得以下场景可以使用跨站 HTTP 请求:使用 XMLHttpRequest 或 Fetch发起跨站 HTTP 请求。W

断点续传(Range的使用)_weixin_34029680的博客-程序员信息网

为什么80%的码农都做不了架构师?>>> ...

linux下c/c++实例之十二cJSON库解析json字符串_GoRustNeverStop的博客-程序员信息网

一、简介      cJOSN库,仅有两个文件cJSON.c和cJSON.h。下载地址:http://sourceforge.net/projects/cjson/files/?source=navbar。二、详解1、cJOSN结构体(1)json的数据结构:[html] view plain copytypedef st

随便推点

Explain字段解释——Extra(重点)_请保持优秀。的博客-程序员信息网

本教程中所使用的数据库的建表语句都在“MySQL高阶教程索引”这篇文章中,点击链接直达:索引&建表语句摘要:本文主要介绍Explain的常见字段——rowsExplain字段解释——Extra1、Usingfilesortfilesort产生原因:排序时没有用到索引列:2、Usingtemporary看例子:这是因为,groupby中只用到了联合索引中的后缀索引列。什么是前缀索引列...

Unit3D重新加载当前场景,用EditorSceneManager.LoadScene 替换 Application.LoadLevel(Application.loadedLevel)_Young_LAS的博客-程序员信息网

Unity3D 之前的Application.LoadLevel(Application.loadedLevel);已经用不了 目前用EditorSceneManager.LoadScene(SceneName);代替首先要添加 using UnityEditor.SceneManagement;using System.Collections;using UnityEngine;

有趣的自定义View — 玫瑰·三阶贝塞尔曲线_Chin_style的博客-程序员信息网

“玫瑰贝塞尔曲线”效果如下:一、效果要求1)在布局中某个位置处玫瑰开始由小而大,淡入出现;2)出现的玫瑰,颜色随机而定,玫瑰可在布局内做动画亦可在整个界面中做动画,如上图;3)玫瑰自下而上做曲线变化,水平方向位移亦随机而定;4)每个玫瑰上浮曲线不同之外,上浮速度也不尽相同;二、实现难点及实现方法1)展示玫瑰可采用直接画(drawBitmap())的方式实现,也可以选...

Eclipse下,把jar包部署到其他文件夹,而不是放在WEB-INF/lib的文件夹下_葛凹先生的博客-程序员信息网

在Eclipse下,把jar包部署到其他文件夹,而不是放在WEB-INF/lib的文件夹下,这样,部署到服务器上,可以把这些包关联上传到服务器上,具体要配置项目下的.classpath,在这个文件下加上需要关联的jar的路径就好了 如(我把jar放在根目录下的lib文件下,注意,不是WEB-INF/lib的文件夹):    ....... 

ES文件浏览器fpt服务器,es文件浏览器 搭建ftp服务器_壬申炖鸡汤的博客-程序员信息网

es文件浏览器 搭建ftp服务器 内容精选换一换Web服务端证书用于客户端浏览器和web服务器之间的通讯,实现数据信息在客户端和web服务器之间的加密传输,可以防止数据信息的泄露。为提高安全性,建议替换成自己的证书,并及时更新证书,保证证书的有效性。已成功登录鲲鹏代码迁移工具。只有管理员(portadmin)可以执行生成CSR文件、导入web服务器证书、下载根证书,重启和更换工作密钥的制作Dock...

2020最全Python入门学习路线,不是我吹,绝对是最全,不是你打我_python588的博客-程序员信息网

近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多。一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学习路线图。对于一个零基础的想学习python的朋友来说,学习方法很重要, 学习方法不对努力白费 一定要有一个正确的学习线路与方法Python学习路线一:Python基础必学知识:【Linux基础】【Python基础语法】【Python字符串】【文件操作】【异常处理】【Python面向对象】.

推荐文章

热门文章

相关标签