草庐IT

JNI_CreateJavaVM

全部标签

java - 从 JNI 获取 Java 中使用的字符串

JAVA代码这是我用JAVA编写的部分代码,如您所见,这是一个名为JC_VerificationCandidate的类,它有两个String成员enrollmentID和seedIndex。classJC_VerificationCandidate{publicJCDSM_VerificationCandidate(StringenrollmentID,StringseedIndex){this.enrollmentID=enrollmentID;this.seedIndex=seedIndex;}publicStringenrollmentID;publicStringseedInd

android - JNI GetMethodId 返回空

我有一个简单的问题,但无法在网上找到解决方案。我只想使用JNI从native检索Java字符串。jintJNI_OnLoad(JavaVM*vm,void*reserved){void*my_lib_handle;jmethodIDmid;jstringresultString;JNIEnv*env;intstatus;__android_log_write(ANDROID_LOG_DEBUG,"JNI",">JNI_OnLoad");status=(*vm)->GetEnv(vm,(void**)&env,JNI_VERSION_1_4);if(statusAttachCurrent

Android - JNI 指南

我想将小型、精简且平均的基于C的解析器合并到我的Android项目中。我过去做过JNI编程,但没有在Android上进行任何类型的native(C)开发。我的计划是将Clib编译成SO并围绕它创建JNI包装器,我将在我的应用程序中使用它。这是可以/应该如何完成的吗?第二个也是最重要的问题-如何将.so包含到我的APK中?它会去哪里? 最佳答案 这取决于您传递的数据量以及我严重怀疑Java/JNI/C的执行速度是否会比nativeJava实现更快的频率。将除“JavaInt”以外的任何内容传递给“Clong”会调用JNI数据转换例程,

Android JNI 本地引用表,转储当前状态

任何AndroidJNI开发人员都应该熟悉logcat中的这条美妙消息。我的问题是:如何告诉VM转储当前表状态?我需要它来进行调试,以确保退出时的native线程没有未完成的本地引用。 最佳答案 完全归功于Pavel,但我认为其他人可能会喜欢示例代码:jclassvm_class=env->FindClass("dalvik/system/VMDebug");jmethodIDdump_mid=env->GetStaticMethodID(vm_class,"dumpReferenceTables","()V");env->Call

android - 即使应用程序已关闭,如何从服务进行 JNI 调用?

我有一个应用程序需要进行非常繁重的图像处理。我的应用程序在Activity中处理非常低分辨率的图像,我打算在服务中进行全分辨率图像处理,因此即使用户关闭了应用程序,处理和保存结果也会在后台通过服务完成。我试过这个,甚至我的服务继续运行JNI函数在应用程序关闭时停止工作。我不确定真正的原因,但我怀疑当应用程序关闭时正在卸载native库。所以我的问题是,即使应用程序已关闭,我如何从服务进行JNI调用? 最佳答案 尝试使用守护进程。在这种情况下,您可以将您的java进程变成守护进程并完成主进程。看这里:https://github.co

Android ffmpeg 简单的 JNI 包装器

一段时间以来,我一直在尝试使用带有命令行访问权限的ffmpeg二进制文件,但一无所获(使用runtime.exec)看起来我能够让它工作的唯一方法是使用C中的包装器来使用JNI访问构建的ffmpeg库......主要问题:我已经有超过15年没有编写C代码了,不知道从哪里开始......我只需要3个操作,我需要将音频添加到视频文件,我需要连接两个视频文件,如果可能的话我需要将剪辑旋转90度(但我可以不这样做)...有没有人有任何可以为我工作的示例代码,或者一些好的起点(我已经用尽了各种谷歌搜索结果的第一页,但无济于事)...如有任何帮助,我们将不胜感激! 最佳

Android gradle ndk jni build with external library & native debugging (ARToolkit)

我正在尝试让AndroidStudio成为我用于java和c/c++代码的主要开发IDE。我希望能够调试native代码。在这种情况下,我尝试将ARToolkit5用作库。由于ARToolkit5中的一些示例,我有这个构建文件。我有这个Android.mk文件MY_LOCAL_PATH:=$(callmy-dir)LOCAL_PATH:=$(MY_LOCAL_PATH)#PullARToolKitintothebuildinclude$(CLEAR_VARS)ARTOOLKIT_DIR:=$(MY_LOCAL_PATH)/../../../../../artoolkit5/androi

android - 如何根据 android 中的 CPU 能力加载不同的 jni 库?

我有几个jni动态库(*.so),跟cpu能力有关,比如有的库支持armv7+neoncpu,有的库支持armv7+vfpv3cpu,有的库支持非armv7cpu。如何根据CPU能力动态加载它们?我试过下面的代码,但没有用。在这个解决方案中,我在下面的安装包中放置了3个不同名称的库版本:(原名是libavcodec.so)libavcodec_neon.so和libavutil_neon.solibavcodec_vfpv3.so和libavutil_vfpv3.solibavcodec_basic.so和libavutil_basic.so但是libavcodec.so依赖于liba

java - Android & JNI 如何将 Byte[] 数据数组传递给 JNI 并取回 Byte[]

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist关闭9年前。Improvethisquestion我想将相机捕获的byte[]数据(帧)传递给JNI部分。我需要立即传递一些帧,所以我在考虑是否可以创建一个byte[][]来存储byte[],以便我可以从JNI取回byte[]。可能吗?我知道getByteArrayElement()可能会有所帮助。有谁知道如何实现它?其实

opencv的使用(Ubuntu linux环境,AS jni,AS java)

最近要完成一个功能,就是把四个视频合成左右上下分布的一个视频。尝试很多方法,最终使用opencv来实现该功能。(通过opencv实现的视频好像没有声音。)研究的步骤,首先在Ubuntu环境测试,该功能是否实现。然后再将生成的库文件放到AS中,使用jni的方法调用,或者将源码放到AS中利用jni技术。在实现过程中遇到很多问题,下面记录。一、在ubuntulinux环境使用opencv。1、下载opencv安装包。下载地址:官网:https://opencv.org/releases/git地址:https://github.com/opencv/opencv/releases2、将下载的安装包放