NDK(12)Jni常用函数
1.参考官方文档
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html
3.函数列表
typedef const struct JNINativeInterface *JNIEnv;
const struct JNINativeInterface ... = { NULL,
NULL,
NULL,
NULL,
GetVersion, DefineClass,
FindClass, FromReflectedMethod,
FromReflectedField,
ToReflectedMethod, GetSuperclass,
IsAssignableFrom, ToReflectedField, Throw,
ThrowNew,
ExceptionOccurred,
ExceptionDescribe,
ExceptionClear,
FatalError, PushLocalFrame,
PopLocalFrame, NewGlobalRef,
DeleteGlobalRef,
DeleteLocalRef,
IsSameObject,
NewLocalRef,
EnsureLocalCapacity, AllocObject,
NewObject,
NewObjectV,
NewObjectA, GetObjectClass,
IsInstanceOf, GetMethodID, CallObjectMethod,
CallObjectMethodV,
CallObjectMethodA,
CallBooleanMethod,
CallBooleanMethodV,
CallBooleanMethodA,
CallByteMethod,
CallByteMethodV,
CallByteMethodA,
CallCharMethod,
CallCharMethodV,
CallCharMethodA,
CallShortMethod,
CallShortMethodV,
CallShortMethodA,
CallIntMethod,
CallIntMethodV,
CallIntMethodA,
CallLongMethod,
CallLongMethodV,
CallLongMethodA,
CallFloatMethod,
CallFloatMethodV,
CallFloatMethodA,
CallDoubleMethod,
CallDoubleMethodV,
CallDoubleMethodA,
CallVoidMethod,
CallVoidMethodV,
CallVoidMethodA, CallNonvirtualObjectMethod,
CallNonvirtualObjectMethodV,
CallNonvirtualObjectMethodA,
CallNonvirtualBooleanMethod,
CallNonvirtualBooleanMethodV,
CallNonvirtualBooleanMethodA,
CallNonvirtualByteMethod,
CallNonvirtualByteMethodV,
CallNonvirtualByteMethodA,
CallNonvirtualCharMethod,
CallNonvirtualCharMethodV,
CallNonvirtualCharMethodA,
CallNonvirtualShortMethod,
CallNonvirtualShortMethodV,
CallNonvirtualShortMethodA,
CallNonvirtualIntMethod,
CallNonvirtualIntMethodV,
CallNonvirtualIntMethodA,
CallNonvirtualLongMethod,
CallNonvirtualLongMethodV,
CallNonvirtualLongMethodA,
CallNonvirtualFloatMethod,
CallNonvirtualFloatMethodV,
CallNonvirtualFloatMethodA,
CallNonvirtualDoubleMethod,
CallNonvirtualDoubleMethodV,
CallNonvirtualDoubleMethodA,
CallNonvirtualVoidMethod,
CallNonvirtualVoidMethodV,
CallNonvirtualVoidMethodA, GetFieldID, GetObjectField,
GetBooleanField,
GetByteField,
GetCharField,
GetShortField,
GetIntField,
GetLongField,
GetFloatField,
GetDoubleField,
SetObjectField,
SetBooleanField,
SetByteField,
SetCharField,
SetShortField,
SetIntField,
SetLongField,
SetFloatField,
SetDoubleField, GetStaticMethodID, CallStaticObjectMethod,
CallStaticObjectMethodV,
CallStaticObjectMethodA,
CallStaticBooleanMethod,
CallStaticBooleanMethodV,
CallStaticBooleanMethodA,
CallStaticByteMethod,
CallStaticByteMethodV,
CallStaticByteMethodA,
CallStaticCharMethod,
CallStaticCharMethodV,
CallStaticCharMethodA,
CallStaticShortMethod,
CallStaticShortMethodV,
CallStaticShortMethodA,
CallStaticIntMethod,
CallStaticIntMethodV,
CallStaticIntMethodA,
CallStaticLongMethod,
CallStaticLongMethodV,
CallStaticLongMethodA,
CallStaticFloatMethod,
CallStaticFloatMethodV,
CallStaticFloatMethodA,
CallStaticDoubleMethod,
CallStaticDoubleMethodV,
CallStaticDoubleMethodA,
CallStaticVoidMethod,
CallStaticVoidMethodV,
CallStaticVoidMethodA, GetStaticFieldID, GetStaticObjectField,
GetStaticBooleanField,
GetStaticByteField,
GetStaticCharField,
GetStaticShortField,
GetStaticIntField,
GetStaticLongField,
GetStaticFloatField,
GetStaticDoubleField, SetStaticObjectField,
SetStaticBooleanField,
SetStaticByteField,
SetStaticCharField,
SetStaticShortField,
SetStaticIntField,
SetStaticLongField,
SetStaticFloatField,
SetStaticDoubleField, NewString, GetStringLength,
GetStringChars,
ReleaseStringChars, NewStringUTF,
GetStringUTFLength,
GetStringUTFChars,
ReleaseStringUTFChars, GetArrayLength, NewObjectArray,
GetObjectArrayElement,
SetObjectArrayElement, NewBooleanArray,
NewByteArray,
NewCharArray,
NewShortArray,
NewIntArray,
NewLongArray,
NewFloatArray,
NewDoubleArray, GetBooleanArrayElements,
GetByteArrayElements,
GetCharArrayElements,
GetShortArrayElements,
GetIntArrayElements,
GetLongArrayElements,
GetFloatArrayElements,
GetDoubleArrayElements, ReleaseBooleanArrayElements,
ReleaseByteArrayElements,
ReleaseCharArrayElements,
ReleaseShortArrayElements,
ReleaseIntArrayElements,
ReleaseLongArrayElements,
ReleaseFloatArrayElements,
ReleaseDoubleArrayElements, GetBooleanArrayRegion,
GetByteArrayRegion,
GetCharArrayRegion,
GetShortArrayRegion,
GetIntArrayRegion,
GetLongArrayRegion,
GetFloatArrayRegion,
GetDoubleArrayRegion,
SetBooleanArrayRegion,
SetByteArrayRegion,
SetCharArrayRegion,
SetShortArrayRegion,
SetIntArrayRegion,
SetLongArrayRegion,
SetFloatArrayRegion,
SetDoubleArrayRegion, RegisterNatives,
UnregisterNatives, MonitorEnter,
MonitorExit, GetJavaVM, GetStringRegion,
GetStringUTFRegion, GetPrimitiveArrayCritical,
ReleasePrimitiveArrayCritical, GetStringCritical,
ReleaseStringCritical, NewWeakGlobalRef,
DeleteWeakGlobalRef, ExceptionCheck, NewDirectByteBuffer,
GetDirectBufferAddress,
GetDirectBufferCapacity, GetObjectRefType
};
4.常用函数表
| 对象(全局和局部)的生成,删除. | |||||||||
| jobject NewGlobalRef(JNIEnv *env, jobject obj); |
Creates a new global reference to the object referred to by the The of by calling |
||||||||
| void DeleteGlobalRef(JNIEnv *env, jobject globalRef); | Deletes the global reference pointed to by globalRef. |
||||||||
| jobject NewLocalRef(JNIEnv *env, jobject ref); |
Creates a new local reference that refers to the same object as local reference. Returns |
||||||||
| void DeleteLocalRef(JNIEnv *env, jobject localRef); | Deletes the local reference pointed to by localRef. |
||||||||
| 类的定义,声明,查找等 | |||||||||
| jclass FindClass(JNIEnv *env, const char *name); |
The result of for applications,and is able to locate classes listed in the The For example, the fully-qualified class name for the "java/lang/String" 如 com.txt.Stu 则定成com/txt/Stu ,把包名中的.改成/ The array type signature of the array class "[Ljava/lang/Object;" |
||||||||
|
jclass GetSuperclass(JNIEnv *env, jclass clazz); |
If the superclass of the class specified by this function returns |
||||||||
|
jclass DefineClass(JNIEnv *env, const char *name, jobject loader,const jbyte *buf, jsize bufLen); |
Loads a class from a buffer of raw class data. The buffer containing the raw class data is not referenced by the VM after the DefineClass call returns, and it may be discarded if desired. |
||||||||
|
jobject AllocObject(JNIEnv *env, jclass clazz); |
Allocates a new Java object without invoking any of the constructors for the object. Returns a reference to the object. The clazz argument must not refer to an array class. |
||||||||
|
|
Constructs a new Java object. The method ID indicates which constructor method to invoke. This ID must be obtained by calling ( The |
||||||||
| 数组相关 | |||||||||
|
ArrayType NewXXXArray |
申请数组 A family of operations used to construct a new primitive array object. Table 4-8 describes the specific primitive array constructors.You should replace NewXXXArray with one of the actual primitive array constructor routine names from the following table, and replace ArrayType with the corresponding array type for that routine. |
||||||||
|
NativeType
返回数组所有元素 |
A family of functions that returns the body of the primitive array. The result is valid until the corresponding Release Java array, changes made to the returned array will not necessarily be reflected in the original
If or it is set to |
||||||||
void ReleaseXXXArrayElements(JNIEnv *env,ArrayType array, NativeType *elems, jint mode); |
A family of functions that informs the VM that the native code no longer needs access to is a pointer derived from copies back all changes made to buffer should be released. following impact, as shown in the following table: Table 4-10 Primitive Array Release Modes
In most cases, programmers pass “0” to the The other options give the programmer more control over memory management and should be used with extreme care. |
||||||||
| jsize GetArrayLength(JNIEnv *env, jarray array); | Returns the number of elements in the array. | ||||||||
|
const NativeType |
A family of functions that copies back a region of a primitive array from a buffer.The following table describes the specific primitive array element accessors. You should make the following replacements: |
||||||||
|
void GetXXXArrayRegion
|
A family of functions that copies a region of a primitive array into a buffer. | ||||||||
| 获取对象属性,成员系列 | |||||||||
|
|
Returns the class of an object. | ||||||||
|
GetMethodID与GetStaticMethodID系列 jmethodID GetMethodID(JNIEnv *env, const char *name, const char *sig); |
Returns the method ID for an instance (nonstatic) method of a class or interface. The method may be defined in one of the
To obtain the method ID of a constructor, supply |
||||||||
|
GetFieldID与GetFieldID系列 |
Returns the field ID for an instance (nonstatic) field of a class. The field is specified by its name and signature. The Get<type>Field and Set<type>Field families of accessor functions use field IDs to retrieve object fields.
|
||||||||
| 调用系列 | |||||||||
|
NativeType CallXXXMethod
|
使用obj,class,等调用值为methoID的函数.注意要用 jobject,不是jclass |
||||||||
|
NativeType CallStaticXXXMethod
|
This family of operations invokes a static method on a Java object, according to the specified method ID. The The method ID must be derived from |
||||||||
| 字符串相关 | |||||||||
|
jstring NewStringUTF(JNIEnv *env, const char *bytes); |
Constructs a new |
||||||||
|
const char * GetStringUTFChars(JNIEnv *env, jstring string,jboolean *isCopy); |
Returns a pointer to an array of bytes representing the string in modified UTF-8 encoding. This array is valid until it is released by If |
||||||||
| 环境相关 | |||||||||
|
jint GetJavaVM(JNIEnv *env, JavaVM **vm); |
Returns the Java VM interface (used in the Invocation API) associated with the current thread. The result is placed at the location pointed to by the second argument, |
||||||||
|
jboolean ExceptionCheck(JNIEnv *env); |
Returns |
||||||||
| 等等 | ... | ||||||||
NDK(12)Jni常用函数的更多相关文章
- 12. oracle 常用函数
一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char) ...
- 【转】JNI学习积累之一 ---- 常用函数大全
原文网址:http://blog.csdn.net/qinjuning/article/details/7595104 本文原创,转载请注明出处:http://blog.csdn.net/qinjun ...
- JNI学习积累之一 ---- 常用函数大全
主要资料来源: 百度文库的<JNI常用函数> . 同时对其加以了补充 . 要素 :1. 该函数大全是基于C语言方式的,对于C++方式可以直接转换 ,例如,对于生成一个jstring类型的 ...
- Mysql 常用函数(12)- left 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html left 的作用 返回字符串 str 中最左边的 ...
- Jmeter 常用函数(12)- 详解 __machineName
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 返回机器(电脑)名称 语法格式 ${_ ...
- [ 转载 ] Android JNI(一)——NDK与JNI基础
Android JNI(一)——NDK与JNI基础 隔壁老李头 关注 4.4 2018.05.09 17:15* 字数 5481 阅读 11468评论 8喜欢 140 本系列文章如下: Androi ...
- Android JNI(一)——NDK与JNI基础
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/articl ...
- oracle常用函数及示例
学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...
随机推荐
- floor舍去法取整
$int = 0.99999999999999999; echo floor($int); // returns 1 $int = 0.9999999999999999; echo floor($in ...
- 关于 iOS10 更新后 360 云盘 的上传按钮消失的解决方案
最近出了iOS10,作为iOS开发者,果断更新. 但是更新完后,打开自己的360云盘,发现想向云盘上传东西,但是传不了,加号按钮不见了. 经过我的研究,原因是 下面的自定义tabbar放置加号按钮的方 ...
- win7 telnet命令无法使用
很多做网络测试的同学发现安装win7后,无法使用telnet命令了,提示“telnet不是内部或外部命令,也不是可运行的程序”,但是很需要在win7中使用telnet工具,怎么办? 首先你要要确认你的 ...
- Careercup - Facebook面试题 - 5188884744896512
2014-05-02 07:18 题目链接 原题: boolean isBST(const Node* node) { // return true iff the tree with root 'n ...
- 2064: 分裂 - BZOJ
Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的他把这个变成了一个数学模型. 假设中 ...
- mac mysql安装
一.安装 1.下载软件包直接安装即可: http://rj.baidu.com/soft/detail/25675.html?ald 安装完成后root默认密码为空: 二.修改密码 直接修改密码会提示 ...
- 【最小生成树】BZOJ 1196: [HNOI2006]公路修建问题
1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1435 Solved: 810[Submit][Sta ...
- .run文件安装
比如realplay.run 安装方法如下 chmod +x realplay.run ./realplay.run 然后他就会执行安装了,在过程中可能会要求你输入yes或no 安装完后就可以用了
- Matlab中cell2mat的使用
binIndices是1*50的cell,每个cell是的1*n(n不定),那么cell2mat(binIndices)得到的是1*sum(cellfun(@length,binIndices))的行 ...
- 剑指offer--面试题10
题目:求整数二进制表示中1的个数. 分析:此题直接考查二进制表示与位运算!!! 正数和负数的二进制表示不同!在计算机中,正数的二进制表示即为通常所写的二进制:而负数的二进制表示则用补码表示,即原码的反 ...