小弟前段时间用eclipse写了一个安卓工程,里面调用了一个可用的JNI动态库,实现对录音数据的处理。现在我想把这个处理放到底层(驱动层或者安卓层,反正就是不需要上层应用程序再调用),因为在底层我知道是可以直接调用用c写的so库文件的,但是不知道应该怎样调用这个现成的JNI so库文件呢?
这个JNI so库文件的借口我都知道,全是之前JNI格式的。(在Java中声明为“public native int Get();”,在对应的.h文件中定义为“JNIEXPORT jint JNICALL Java_HelloWorldnew_Get(JNIEnv *, jobject);”)。这样如果我在底层直接调用的时候包含了这个.h文件,然后直接调用Java_HelloWorldnew_Get(),应该是不对的吧?请高手指教谢谢
AndroidJNIso库调用linux
这个JNI so库文件的借口我都知道,全是之前JNI格式的。(在Java中声明为“public native int Get();”,在对应的.h文件中定义为“JNIEXPORT jint JNICALL Java_HelloWorldnew_Get(JNIEnv *, jobject);”)。这样如果我在底层直接调用的时候包含了这个.h文件,然后直接调用Java_HelloWorldnew_Get(),应该是不对的吧?请高手指教谢谢
AndroidJNIso库调用linux
解决方案 »
- 如何实现Android平台pppoe拨号库,提供给界面调用?
- 有没有人知道android怎么访问Red5服务器上面的视频啊?
- 想用SD卡上的图片做Activity背景
- 求助:android两个及以上控件点击事件同时监听响应如何实现
- 在Android平台中,因为手机的屏幕大小和分辨率的不同,怎么样实现图片的显示大小相同?
- widget 如何控制在手机上重复添加同一个widget 小组件
- 是否有办法控制虚拟键盘弹出的位置?
- Fragment跳转回Activity
- eclipse中点了“ctrl+z”,现在想恢复怎么办?
- android数据库操作
- android客户端通过webservice获取数据库图片
- android spinner text 太长 最后省略("..."),怎么实现
我刚才尝试了在调用这个库的.c文件中直接包含原有的.h文件,然后直接调用全名,但是在用参数的时候有一个jbyteArray的变量,我在c中用char型数组,提示错误“error: cannot convert 'char*' to '_jbyteArray*' for argument '3' to 'jint Java_cn_thinkit_libtvqe_TVQEJNI_TVqeGetVersion(JNIEnv*, _jobject*, _jbyteArray*, jshort)'”是不是我的思路完全错误呀
通过头文件来调用没试过,一般以前通过头文件来调用的话都是以.a的库文件提供的
针对这个so库文件的头文件我也有,里面声明了jni的几个几口(如JNIEXPORT jint JNICALL Java_cn_libtvqe_TVQEJNI_TVqeFree (JNIEnv * env, jobject j);),我在java层调用的时候直接用TVqeFree()就可以了,但是现在在hal层调用应该怎么调用?现在就是在这犯晕了
按理说这个库应该重新编译,编译成标准的c借口的so库就可以直接用了。但是这样就需要修改源码,有点麻烦,所以我就想看看能不能直接调用可是从网上找的都是java调用jni的,或者c中调用c借口的,木有在c中调用原jni库的。