JNI : 创建一个jobjectArray而不预先知道大小
我想使用jni将c的字符串返回到Java. 我看到我可以使用NewObjectArray(): JNIEXPORT jobjectArray JNICALL Java_Array_initStringArray(JNIEnv *env, jclass cls, jint size) { jclass stringCls = (*env)->FindClass(env, "Ljava/lang/String;"); if (stringCls == NULL) return NULL; jstringArray result = (*env)->NewObjectArray(env, size, StringCls, NULL); if (result == NULL) return NULL; ... } 但是在这里,我不知道int size参数:我不知道填充我的数组的字符串数量.那么有没有办法创建jobjectArray而不提前阵列的大小? 创建一个空数组
1096 2022-07-19
编程技术问答社区
如何将char数组从C语言的JNI函数中传递到Java方法中作为byte[]?
我无法找到从jni方法传递char buffer到Java方法的正确文档.这是代码 jint JNICALL Java_foo_package_MyJavaClass_myNativeMethod(JNIEnv *jenv, jobject jobj) { jclass clazz = (*jenv)->GetObjectClass(jenv, jobj); // MyJavaClass method: private void addData(byte[] data) jmethodID mid = (*jenv)->GetMethodID(jenv, clazz, "addData", "([B)V"); assert(mid); const char buf[] = { 0, 1, 2, 3, 42 }; const size_t buf_len = sizeof buf; (*jenv)->CallVoidMe
448 2022-07-19
编程技术问答社区
Android NDK : 在...跳过init时没有发现JNI_OnLoad : 但有JNI_OnLoad
我再次问这个问题,因为我必须. 在运行基于NDK的应用程序时,我正在拥有此错误. d dalvikvm:no jni_onload在/data/app-lib/com.venky-1/libme.so 0xa5082228中,跳过init W Dalvikvm:没有找到本机Lcom/Venky/Home; .getpermission:(Landroid/App/Activity;)我 我经历过 no in ...跳过init no jni_onload找到跳过init> application shutdown no jni_onload()找到和VM关闭 ​​ jni_onload未找到 他们的问题是 它们不使用JNI_ONLOAD,因为它们使用了JNI特定命名约定(例如java_com_venky_home_start()).因此,此消息没有任何意义,因为有一个替代方案. 他们正在使用c ++,并且有函数名称mangling. 我的情
2434 2022-07-19
编程技术问答社区
维护C++对象,使用其方法取决于用户界面
我有一个需要解析的问题: 我有一个java,具有创建对象并利用该对象的方法. 这是我的Java代码: 我有一个名为issmjni的Java文件,它包含一个本机方法: public static native long fac(long n); static { System.loadLibrary("FacLib"); } public static long facIterative(long n) { return fac(n); 在我的主类我有这个: long result = IssmJni.facIterative(Long.parseLong(input)); System.out.println(result); 这是我的c ++代码: 主文件: static jlong factorial(JNIEnv *env, jclass clazz, jlong n) { fa
456 2022-07-19
编程技术问答社区
JNI的二维数组之和
希望使用NDK,我没有运气的是Android Studio(直到现在我没有得到指示NDK路径的重点,因为我在IDE之外的终端中完成了所有内容而没有代码完成),我切换到Eclipse这使得与JNI和NDK DEV合作更容易. 首先,我创建了一个项目,可以在c中汇总2d整数并将sum返回给java侧.我无法努力工作.你能帮忙吗?!! 我的c代码是: #include JNIEXPORT jint JNICALL Java_com_example_jninew_MainActivity_getNum(JNIEnv *env, jobject obj, jintArray arr) { int i,j, sum = 0; jsize width = (*env)->GetArrayLength(env, arr); jintArray *line = (*env)->GetIntArrayElements(env, arr, 0); for (i
382 2022-07-19
编程技术问答社区
如何用Android Sudio使用我自己的Android.mk文件
我在Android.mk文件中定义了一些变量(我传递一些编译器的标志),但每次构建项目时,Android.mk都被覆盖了.我假设Gradle是负责任的,我应该在那里看? 如何使用我自己的android.mk文件? 背景信息: Ubuntu 64位,Android Studio 1.0.1,JDK7. 我用 O-LLVM NDK ,以及在app/build/intermediates/ndk/debug(它是我项目中唯一的Android.mk文件)的Android.mk文件,不同于O-LLVM文档的位置提供了. 此外,没有Application.mk文件,所以我假设Gradle负责对编译器的调用? 任何帮助将非常感激. kyle 更新的信息 build.gradle - (app) //The following code until the "----" line is the new build.gradle config file //
462 2022-07-19
编程技术问答社区
如何在Intellij上设置NDK
我有很多麻烦让Android NDK和JNI使用Intellij. 可以有人请指导我. 我看过其他问题,找不到任何信息或我理解的任何信息.我konw可以获得样本OpenCV项目工作,但他们已经在它们内部设置了. 解决方案 根据此链接,Intellij没有支持NDK,但计划很快集成它
238 2022-07-19
编程技术问答社区
如何使用Jni将结构从c代码传递到java中?
我必须通过一个结构 struct Info { u_int8_t timestamp[8]; u_int32_t a; u_int32_t b; u_int32_t c; ActiveInfo activeInfo[MAX_ACTIVE_SET]; }; struct ActiveInfo { u_int8_t is_reference; u_int16_t p; u_int32_t q; u_int8_t r; u_int8_t s; }; typedef struct ActiveInfo ActiveInfo; 我想通过这个(信息)结构到我的java code.i有goggled,但没有得到完整的方式来执行此操作. 谢谢. 解决方案 必须在Java侧定义结构,作为与成员的类. 事实是JNI允许C访问Java对象,而不是Java访问C对象(结构).因此
246 2022-07-19
编程技术问答社区
安卓NDK JNI游戏中SDL的倾斜控制
我正在使用Android NDK和JNI系统在使用SDL(简单的DirectMedia层)的C ++游戏.我已经完成了大部分部分,但我无法弄清楚如何实现倾斜控制(朝鲜运行中的倾斜控制).我在没有任何相关信息的情况下oogled. 请帮助我,我卡住了. raghuvendra kumar 解决方案 我能够在SDL中使用倾斜控制,尽管我仍然不了解如何对屏幕像素位置相关x,y,z值.但至少可以使用x,y,z值来执行至少基本操作.感谢空气机_ 右侧指针.这很简单.示例测试代码如下: - #include "../SDL/src/core/android/SDL_android.h" //Get Tilt values though SDL implementation void InputHandler::HandleTitltEvt() { float accelValues[3]; Android_JNI_GetAccelerometerValues(ac
322 2022-07-19
编程技术问答社区
通过使用jni改变char*的编码类型
我通过使用JNI更改CHAR *编码. 是正确的代码吗?请检查. jnicommunicator.cpp const char *JNICommunicator::changeStringToUTF8(const char* str) { JniMethodInfo t; JniHelper::getStaticMethodInfo(t, JNIPakageName, "changeStringToUTF8", "([B)Ljava/lang/String;"); jbyteArray arr = (t.env)->NewByteArray(strlen(str)); (t.env)->SetByteArrayRegion(arr,0,strlen(str), (const jbyte*)str); jsize arrSize = t.env->GetArrayLength(arr); jbyte *pbyte = (t.en
396 2022-07-19
编程技术问答社区
不幸的是,OpenCV管理器在OpenCV 2.4.3 for android 4.2 ( Mac OSX 10.7)中已经停止。
我有一个运行OpenCV样本项目的问题(3 - 4).每当我运行该程序时,我发现问题"不必当地opencv manager已停止"在我的android模拟器中显示. 问题发生在每次调用 时 opencvloader.initasync(opencvloader.opencv_version_2_4_3,这个,mloadcallback); 我跟随这个页面 http://docs.opencencv.org/doc/tutorials/introduction/android_binary_package/dev_with_ocv_on_android.html 这是我的警告消息 //p>/eclipse-android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/. ./../.
404 2022-07-19
编程技术问答社区
为tux rider安卓应用构建一个jni lib
我已经下载了 drodin 的 Android 应用程序“Tux Rider"源代码,以便我自己构建它.https://github.com/drodin/TuxRider 在应用程序中,调用了一个名为“tuxrider"的库 System.loadLibrary("tuxrider"); 但是没有这样的库,而且我不知道如何从那里的所有文件中构建一个. 提前感谢您的任何建议. 解决方案 我终于设法解决了一个问题.它是由 GoogleAds 引起的,而不是由 tuxrider 库引起的.只需在 MainActivity.java 中评论所有提及 GoogleAds 的内容.其中包括: //import com.google.ads.AdRequest; //import com.google.ads.AdSize; //import com.google.ads.AdView; ... // private static AdView mAdView = nu
188 2022-07-19
编程技术问答社区
帮助解读logcat输出 - 过多的JNI全局引用
可以任何人给我任何提示,导致我的应用程序中止并给出这个输出吗? I/ActivityManager( 68): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=MapDroid.MapDroid/mapdroid.StudentList } from pid 223 I/ActivityManager( 68): Start proc MapDroid.MapDroid for activity MapDroid.MapDroid/mapdroid.StudentList: pid=506 uid=10036 gids={3003} I/ActivityThread( 506): Pub MapDroid.MapDroid.__mono_init__: mono.MonoRuntimeProvider D/
492 2022-07-19
编程技术问答社区
错误。SkImageDecoder::Factory返回null
我正在研究一个项目,该项目正在使用MPEG2编解码器进行解码.我的编解码器在c. 中 在解码视频后,它返回RGB缓冲器的无符号CHAR指针,其是指向存储为字节阵列的图像比特的指针.我的显示功能在Android中,因此我必须使用JNI将该信息发送到Android. 在调用显示功能之前,我将RGB缓冲区数据复制到字节数组并将其传递到显示功能: BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inDither = false; opt.inPreferredConfig = Bitmap.Config.RGB_565; Bitmap bit=BitmapFactory.decodeByteArray(data, 0, data.length,opt); canvas.drawBitmap(bit, draw_x, draw_y, null); 但是当我运行应用程序时,消息即将到来: Deb
188 2022-07-19
编程技术问答社区
不满意的链接错误 AudioRecordNew
尝试使用 这里的代码我试图合并这两个类,以便最终得到一个 ulaw 音频数据的 inputStream.所以我像这样编辑了 UlawEncoderInputStream: private MicrophoneInputStream micIn; public UlawEncoderInputStream() { mMax = 0; try { micIn = new MicrophoneInputStream(8000, 1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 然后尝试使用那个 UlawEncoderInputStream: while(transmittingAudio) {
180 2022-07-19
编程技术问答社区
改变安卓系统打开文件的方式,使其触发系统服务功能
在AOSP代码中的哪个地方可以在用户尝试打开专门命名的文件时添加触发自定义系统服务的代码? 例如,如果用户在android上打开Microsoft Excel上的文件,则假设应用程序正在创建文件才会在电子表格中读取. 我遵循 http://processors.wiki.ti.com上的指令/index.php/android-adding_systemservice 解决方案 任何进程打开的所有文件都反映在/proc中.我要么修改procfs,要立即和完全追踪此类事件,或者如果要求允许,请退回到更少的穿透方法,在短时间内监视/proc. 另请参见 如何监视实时进程的已打开文件? .
262 2022-07-19
编程技术问答社区
在Android上用Delphi实现MIDI
我正在寻找一段时间以便在Delphi XE5中播放MIDI的方法与Android瞄准.我之前的几个问题与这个"Quest":-)相关.我已经向Embarcadero提交了两个请求:添加midi支持tmediaplayer和#119423 为firemonkey添加一个midi框架,但那做了没有帮助.我终于成功了.据我所知,有更多的人在Android上寻找MIDI,我将这个问题与文档的答案发布. 解决方案 Android系统具有内部MIDI合成器.您可以通过Android NDK访问它.我在包含一些下载的文章.此答案是本文的简短描述.你会在这里看到的是一个概念证明.它将展示如何在Android系统上播放MIDI Notes,但需要改进.欢迎改进建议: - ) 使用Eclipse与Java项目接口.我认为你有Delphi Xe5与移动包,这给你已经安装了两件事:Android SDK和NDK. 不要通过从Google下载完整的Android SDK来重新安装这些. 下载和安装
1008 2022-07-19
编程技术问答社区
从C语言代码中设置/获取Java List[>]。
java代码 在Java代码中我有一个名为IdentificationResult的类,其中有3个成员: enrollmentID enrollmentSettings identParams. 这里是类: package com.vito.android.framework.service; class IdentificationResult { class IdentParams { byte[] otp; String seedId; } String enrollmentID; String enrollmentSettings; List identParams; } 在主类中我有功能IdentificationResult GetAuthenticationStatus( ),这是主类: public class TokenManage
210 2022-07-19
编程技术问答社区
Android如何处理多实例数据/身份和JNI
这是一个关于良好实践和智能解决方案的问题,我需要一个建议. 我有一个应用程序(据我在 Stackoverflow 和 Google 搜索中可以阅读): 该应用程序处理各种文档,我喜欢它可以同时处理多个文档.(我习惯于 Win32,每个实例都有一个程序段和一个数据段,但在 Android/Java 中显然不是这样.) 我看到一个实例从应用程序存储(平板电脑)启动应用程序,另一个实例打开带有附加文档文件的 Gmail 或电子邮件,第三个实例是从文件处理应用程序(如 ES 文件资源管理器)打开文件.而且我喜欢它们都可以在两者之间翻转.用户可能希望一次阅读多个文档.(如果我在 Android/Java 环境中使用了错误的实例一词,请纠正我) 该应用程序构建在一个 JNI 部分中,其中包含所有数据和逻辑以及一个 Java Android 用户界面.(JNI 部分旨在独立于操作系统以在不同操作系统中实现,具有粘贴 c 文件.) 每次屏幕翻转或实例翻转时,Android 部分都会重新
150 2022-07-19
编程技术问答社区
如何阻止一个DLL在远程桌面会话注销时终止应用服务器?
我有一个应用服务器(JBoss,但这也发生在 Tomcat 中)作为服务在 Windows Server 2003 中运行.它使用 -Xrs 标志运行. 在应用服务器下运行的Java应用程序通过JNI调用一个用C++编写的可定制接口(意味着我们可以修改这段代码),引用一个第三方DLL文件来处理图像(Lincoln 用于转换 PostScript). 当我们以控制台(mstsc /console)或管理员(mstsc /admin)模式通过远程桌面连接登录服务器时,当我们注销时,如果林肯DLL文件已加载,应用服务器将确认注销发出信号,服务进程将立即终止,不影响. 我相信信号是 CTRL_LOGOFF,但我可能不正确. JavaJiggle 文章之后关于信号处理,显然信号处理程序是在处理 DLL 文件时传递给 DLL 文件的.这意味着第三方 DLL 文件(本例中为林肯)通过注销监听并响应 CTRL_LOGOFF 信号. 我相信,我应该能够在我的 C++ 接口中对
444 2022-07-19
编程技术问答社区