- 浏览: 800417 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
数组的常用操作:
对象的常用操作:
另外
1、
这个里面 有JNI各个方法的说明 可以当做api
2、
=============================================================================================================== //找到类文件 jclass objectClass = (*env)->FindClass(env, "com.lp.MailInfo"); //或者 obj 参数表示要你想要得到类型的类对象。 jclass class_Field = (*env)->GetObjectClass(env,obj); //得到构造函数 jmethodID mid_date = (*env)->GetMethodID(env,objectClass, "<init>", "()V"); //生成对象 jobject o = (*env)->NewObject(env,jclass,jmethod); //jclass类 构造方法 后面的就是构造方法的参数 可以没有 例如 jobject book; jclass class_book; jmethodID md_book; class_book = (*env)->FindClass(env,"LBook1;"); md_book = (*env)->GetMethodID(env,class_book,"<init>","(IILjava/lang/String;)V"); book = (*env)->NewObject(env,class_book,md_book,100,1,"huanghe"); =============================================================================================================== http://www.cnblogs.com/daniel-shen/archive/2006/10/16/530587.html 表 3-2 Java虚拟机类型签名 类型签名 Java 类型 Z boolean B byte C char S short I int J long 注意 这个是J F float D double L fully-qualified-class ; 全限定的类 [type type[] (arg-types)ret-type 方法类型 例如,Java 方法: long fun(int n, String s, int[] arr); 具有以下类型签名: (ILjava/lang/String;[I)J 属性 访问对象实例域的相关函数如下: jfieldID GetFieldID(JNIEnv *env, jclass cl, const char name[], const char sig[]) 获取实例对象的域ID 该函数返回一个域的标识符。各参数含义如下: env JNI 接口指针;cl 类对象 ; name 域名; sig 编码的域签名 XXX GetXXXField(JNIEnv *env, jobject obj, jfieldID id) 该函数返回域的值。域类型XXX是Object, Boolean, byte, char , short, int ,long ,float, double 中类型之一。 参数 env JNI借口指针;obj为域所在对象;id为域的标识符。 void SetXXXField(JNIEnv *env,jobject obj, jfieldID id, XXX value) 例如: //招到类中名为"topic"的string类型的属性 jfieldID topicFieldId = (*env)->GetFieldID(env, objectClass,"topic", "Ljava/lang/String;"); jstring str = (*env)->GetStringField(env,obj,topicFieldId); jfieldID ival = (env)->GetFieldID(objectClass,"serial","I"); (env)->SetIntField(obj,ival,10); 方法 得到方法id static jmethodID message; static jmethodID audio; static jmethodID video; video = (*env)->GetMethodID(env,ljls,"video_data_cb","([BI)I"); audio = (*env)->GetMethodID(env,ljls,"audio_data_cb","([BI)I"); message = (*env)->GetMethodID(env,ljls,"message_cb","(SI)I"); 调用方法 int ret = (*env)->CallIntMethod(env,g_meida_obj,audio,jarray,size); env obj对象 方法id 参数 静态方法 不推荐调用 GetStaticMethodID =============================================================================================================== jbyteArray 转换为unsigned char * unsigned char *src; jbyte *arr = (*env)->GetByteArrayElements(env,yuvBuf,0); src = (char *)arr; unsigned char *转换为jbyteArray unsigned char *dst; jbyte *byte = (jbyte*)dst; jbyteArray rgbBuf = (*env)->NewByteArray(env,width*height*3); (*env)->SetByteArrayRegion(env,rgbBuf, 0, width*height*3, byte); //释放 (*env)->ReleaseByteArrayElements(env,yuvBuf,arr,0); =============================================================================================================== 让object成为全局变量 1、定义全局变量 static jobject g_meida_obj; 2、声明全局变量 g_meida_obj = (*env)->NewGlobalRef(env,obj); 貌似用jmethodID不需要特殊设置 直接定义复制即可 =============================================================================================================== 关于线程 1、定义全局变量 static JavaVM *g_jvm; 2、赋值 (*env)->GetJavaVM(env,&g_jvm); 3、你在需要用的地方 特别是不是jni的方法 要想使用当前线程的JNIEnv JNIEnv *env; (*g_jvm)->AttachCurrentThread(g_jvm,&env, NULL); 。。。。。。 (*g_jvm)->DetachCurrentThread(g_jvm); =============================================================================================================== 回收内存 jclass cls = env->FindClass("sinashow1android/info/BlackIPUserInfo"); jobject black_ip_obj = env->NewObject(cls,construction_id); //回收局部对象的内存 env->DeleteLocalRef(black_ip_obj); env->DeleteLocalRef(cls); 线程处理是 需要放开 (*g_jvm)->DetachCurrentThread(g_jvm); =============================================================================================================== char 转换为 string jstring chartojstring(JNIEnv *env, const char *chars) { jstring result; jint len = strlen(chars); if(len <= 0) { result = env->NewStringUTF(""); return result; } jclass stringClass; jmethodID cid; jbyteArray elemArr; jstring jencoding; stringClass = env->FindClass("java/lang/String"); if (stringClass == NULL) { return NULL; } cid = env->GetMethodID(stringClass,"<init>", "([BLjava/lang/String;)V"); if (cid == NULL) { return NULL; } jencoding = env->NewStringUTF("GBK"); elemArr = env->NewByteArray(len); if (elemArr == NULL) { return NULL; } env->SetByteArrayRegion(elemArr, 0, len, (jbyte*)chars); result = (jstring)(env->NewObject(stringClass, cid, elemArr, jencoding)); env->DeleteLocalRef(elemArr); env->DeleteLocalRef(stringClass); env->DeleteLocalRef(jencoding); return result; }
评论
1 楼
doloveme
2012-09-12
数组的常用操作:
对象的常用操作:
另外
1、
Java代码
http://blog.csdn.net/yang_hui1986527/article/details/6887052
这个里面 有JNI各个方法的说明 可以当做api
2、
Java代码
推荐一个网址 里面关于jni的学习内容比较多
对象的常用操作:
另外
1、
Java代码
http://blog.csdn.net/yang_hui1986527/article/details/6887052
这个里面 有JNI各个方法的说明 可以当做api
2、
Java代码
推荐一个网址 里面关于jni的学习内容比较多
发表评论
-
JAVA代码混淆
2016-05-05 18:24 1369JAVA代码混淆 <!--[if !supportL ... -
android 监听状态栏被下拉
2015-12-25 17:23 3375Activity的onWindowFocusChange()方 ... -
android使用mount挂载/system/app为读写权限,删除或替换系统应用
2015-11-27 14:13 3949注意:以下代码中#开头的则为需要执行的shell命令,其他的 ... -
Ubuntu 14.04 文件服务器--samba的安装和配置
2015-11-10 10:49 602jingyan.baidu.com/album/00a07f ... -
linux生成指定大小的文件
2015-08-26 16:02 1655# dd if=/dev/zero of=50M.file ... -
intellij 打开工程在每个java文件上 有个红色的无效符
2015-07-24 13:52 1710说明该类不是可编译文件。在project Structure中 ... -
logcat命令详解
2015-07-22 16:34 931Android日志系统提供了记录和查看系统调试信息的功能。日 ... -
gradle打包遇到的错误汇总
2015-07-21 11:32 0错误1:A problem occurred ... -
Android读写XML(下)——创建XML文档
2015-04-29 11:02 570在前面的2篇文章Android读写XML(上)—— pack ... -
Android读写XML(中)——SAX
2015-04-29 10:54 589在Android读写XML(上) ... -
Android读写XML(下)——创建XML文档
2015-04-29 10:52 660在前面的2篇文章Android读写XML(上)—— pack ... -
android:configChanges locale 改语言后,该配置不起作用的原因
2015-03-23 14:38 2346@Override public void on ... -
android.app.Fragment$InstantiationException 解决办法
2015-03-23 13:46 1312android.app.Fragment$Instantia ... -
linux 查看内存
2015-02-10 13:08 6961、free监控内存使用情况 #free 2、watc ... -
android fastboot 刷机 指令
2015-01-19 18:31 1469原生bootloader:bootloader-gro ... -
[Android实例] android中进行https连接的方式的详解 (转发)
2015-01-09 15:50 666x 如果不需要验证服务器端证书, ... -
编译android源码apk是否生成odex方法
2014-10-20 17:19 1580其实Android系统默认的配置是,如果没有指定DISABL ... -
关于android源码中的APP编译时引用隐藏的API出现的问题
2014-10-20 15:36 772今天在编译android源码中的计算器APP时发现,竟然无法 ... -
Android系统进程Zygote启动过程的源代码分析
2014-09-17 10:09 454在Android系统中, ... -
Handler和HandlerThread
2014-09-16 16:58 6561.什么是Handler? SDK中关于Handler的说 ...
相关推荐
博客 AndroidStudio JNI开发(二) Native调用java 和 Native调用Andorid API 的代码
实现了android 应用层和通过JNI层回调函数完成应用与native 本地代码之间的相互访问,对于了解JNI回调函数的用法有帮助
最简版native层动态注册代码
昨天把Ogre3d 编译到Android 平台安装之后,再回头看代码才发现,在Android工程中居然没有Java源文件,从Manifest文件中才知道原来使用的是 NativeActivity 。这一下让我犯糊涂,没有Java文件,没有Activity,那我要...
Java Native Interface (JNI)标准是 java 平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、 C++ 和汇编...
本代码是jni开发入门级别代码,非常简单易懂,欢迎大家踊跃下载学习
Android-opencv-4.3.0版本,里面只有 include文件夹及 jniLibs文件-
这是我的博客< Android Studio使用JNI调用C代码>里面用到的demo 原文地址:http://blog.csdn.net/u013210543/article/details/52103015
JNI是Java Native Interface的缩写,即Java本地接口.从Java1.1开始,JNI标准成为Java平台的一部分,它允许java代码和用其它语言编写的代码进行交互.JNI是本地编程接口,它使得在Java虚拟机(VM)内部运行的Java代码能够...
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言...
Android虚拟机允许你的应用程序源代码通过JNI调用实现本地代码的方法,需要在应用程序中使用关键字native声明一个或多个方法表明该方法是通过本地调用实现的
Android 本目录下的代码都是来自于我的...JniCallback 演示了如何从Native线程回调Java的函数,相关博文:Android开发实践:JNI层线程回调Java函数示例 JniBuffer 演示了各种从Java端到Native层的Buffer传递方法,相
本资源为一份详细的Android项目中的JNI(Java Native Interface)操作指南。JNI是Android中Java与本地代码(如C/C++)进行交互的关键技术,它允许开发者利用原生库实现高性能、底层功能等需求。 这份指南内容涵盖了...
JNI (Java Native Interface)是一套编程接口,用来实现Java代码和其他语言(c、C++或汇编)进行交互。下面通过本文给大家讲解Android studio JNI开发的三种方式,需要的朋友参考下吧
这是Android中JNI开发中动态注册多个类的native方法,以及分模块化管理不同native的代码.
andoid平台native 层 gbk2utf8源代码
最近在将 HevSocks5Client 移植到 Android 上了,在经过增加...Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 代码如下:…#if defined
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地...
在不使用JNI的情况下从Qt调用Android函数 它是项目的一个分支,旨在提供一个无需使用JNI即可从Qt / QML访问Android功能的库。 备注:该项目仅支持gradle构建系统。 特征 SystemDispatcher-C ++ / Qt和Java / ...