首页 > 编程语言 >java向 jni传递问文件指针

java向 jni传递问文件指针

时间:2023-11-21 11:07:11浏览次数:35  
标签:java int FileDescriptor fd env fileDescriptor jni 指针


1、创建 fd ,jni 接口

public  static native int openFileFromNative(FileDescriptor fileDescriptor);

2、java 文件获取文件指针

ParcelFileDescriptor pfd =  = getContentResolver().openFileDescriptor(filePathUri, "rw");
      FileDescriptor fd = pfd.getFileDescriptor();
      openFileFromNative(fd);

3、C++ 调用函数

static int jniGetFDFromFileDescriptor(JNIEnv * env, jobject fileDescriptor) {
    jint fd = -1;
    jclass fdClass = env->FindClass("java/io/FileDescriptor");
    if (fdClass != NULL) {
        jfieldID fdClassDescriptorFieldID = env->GetFieldID(fdClass, "descriptor", "I");
        if (fdClassDescriptorFieldID != NULL && fileDescriptor != NULL) {
            fd = env->GetIntField(fileDescriptor, fdClassDescriptorFieldID);
        }
    }
    LOGD("jni Get FD From File Descriptor %d",fd);
    return fd;
}

// jni对应函数
static jint openFileFromNative(JNIEnv* env, jobject clazz,  jobject fileDescriptor) {
 int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
 //todo
}

文章参考:
如何正确通过在Android中使用JNI资产的FileDescriptor到FFmpeg的(How to properly pass an asset FileDescriptor to FFmpeg using JNI in Android)


标签:java,int,FileDescriptor,fd,env,fileDescriptor,jni,指针
From: https://blog.51cto.com/u_15866638/8497608

相关文章

  • javap获取jni 对应数据类型
    先用javac生成*.class文件,然后javap-cCallJni.class更多帮助:javap-help......
  • Android studio使用javadoc生成 api 说明文档
    文章目录1、工具下载2、实用工具添加注释3、使用该工具生成api文档4、查看生成的api文档5、帮助1、工具下载2、实用工具添加注释官方wikiTogeneratejavadocsforactiveelementpress“shift+alt+G”.Togeneratejavadocsforallelementsincurrentjavafilepre......
  • Java开发工程师的前景:掌握未来的关键
    随着科技的飞速发展,Java开发工程师在当今的IT领域扮演着越来越重要的角色。Java作为一种强大的编程语言,被广泛应用于企业级应用、移动应用、Web应用等多个领域。在这个充满竞争的时代,掌握Java技术等于掌握了开启未来大门的钥匙。一、Java的稳定性和广泛性Java自1995年问世以来,一直......
  • java to json / json to java使用FastJson对JSON字符串、JSON对象及JavaBean之间的相
    目录1、准备 2、javato json 3、jsontojava1、准备 1、json格式在线查看2.下载 阿里巴巴json 解析库alibaba/fastjson下载最新的jar包并且放在项目libs目录下,addaslib````2、javato json 比如我们想使用java 编写以下json格式数据{   "creatT......
  • 学习Java是个好选择吗?
    学习Java是个好选择吗?Java是一门非常流行和广泛应用的编程语言,学习Java有许多好处。以下是一些关于学习Java的优点: 1.广泛应用:Java被广泛应用于各种领域,包括软件开发、移动应用开发、Web开发、大数据处理、物联网等。学习Java可以为你提供丰富的就业机会和职业发展路径。 2.跨......
  • Java开发者的Python快速进修指南:异常捕获
    在之前的学习中,我们已经讲解了函数和控制流等基本概念。然而,在接触实际业务时,你会发现异常捕获也是必不可少的一部分,因为在Java编程中,异常处理是不可或缺的。Python的异常捕获与Java的异常捕获原理是相同的,只是在写法上有一些区别。它们的目的都是为了处理程序在执行过程中出现错......
  • 入门级Java日期的加减
    1.Date的加减1.1Date加减新手适用  不推荐使用。2.Calendar的日期加减 演示如下: 若不需要显示这样的,就如下: 运行结果,如下:  3.LocalDateTime的日期加减   运行结果如下: ......
  • JAVAOOP日历之Calendar日历类型的常见方法
    1、获取当前时间 Calendarc=Calendar.getInstance();  2、为日历对象定义一个指定日期的数据 c.set(2023,1,1); 3、为日历对象加和减年、月、日 c.add(Calendar.YEAR,2);//加2年c.add(Calendar.MONDAY,2);//加2月c.add(Calendar.DATE,2);//加2日c.......
  • javaOOP(LocalDateTime日期方法)之日期的加减
    以下操作都可以用于LocalDateTime,LocalDate,LocalTime等方法本次只用了LocalDateTime测试1、加法 2、减法 ......
  • 信创就用国产的 Solon Java Framework,v2.6.0 发布
    先吹牛!在v2.6这个新的里程碑节点,Solon又完成了几件惊天大事(每一件,都是经历了漫长时间打磨与积累):(1)SolonNative,有了第一个开源案例:dromara/neutrino-proxy(它是2021年起头的二级项目)Solon估计是国内唯搞AOT和Java原生编译的。或许,这块的友商只能是Micronaut、Quarkus......