GAMES PC DOWNLOAD FREE FULL

GAME

[Android NDK ] Passing JNI Arrays

 


1
2
3
4
5
6
7
8
9
JNIExport jint JNICALL Java_IntArray_sumArray(JNIEnv *env, jobject obj,
jintArray arr){
jsize len = *env->GetArrayLength(env,arr);
jint *body = *env->GetIntArrayElements(env,arr,0);
for (jint i = 0; i < len; ++i){
sum += body[i];
}
*env->ReleastIntArrayElements(env, arr, body, 0);
}
JNI FunctionDescription
Get<Type>ArrayRegion
Set<Type>ArrayRegion
Copies the contents of primitive arrays to or from a pre-allocated C buffer.
Get<Type>ArrayElements
Release<Type>ArrayElements
Obtains a pointer to the contents of a primitive array. May return a copy of the array.
GetArrayLengthReturns the number of elements in the array.
New<Type>ArrayCreates an array with the given length.
GetPrimitiveArrayCritical
ReleasePrimitiveArrayCritical
Obtains or releases a pointer to the contents of a primitive array. These functions allow virtual machines to disable garbage collection while the native code accesses the contents of primitive arrays.
JNI Array Example program
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class SortArray {
private native int[] sort(int[] arr); //native method
 
static //static initializer code
{
System.loadLibrary("SortArray");
}
 
public static void main(String[] args)
{
int iArr[] = {4,5,2,7,1,9}; // Input array
int oArr[]; //Output array
 
SortArray arr = new SortArray();
 
System.out.println("Unsorted array: ");
for(int i = 0; i < iArr.length; i++){
System.out.println(iArr[i] + " ");
}
 
oArr = arr.sort(iArr);
 
System.out.println("Sorted array: ");
for(int i = 0; i < oArr.length; i++){
System.out.println(oArr[i] + " ");
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class SortArray */
 
#ifndef _Included_SortArray
#define _Included_SortArray
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: SortArray
* Method: sort
* Signature: ([I)[I
*/

JNIEXPORT jintArray JNICALL Java_SortArray_sort
(JNIEnv *, jobject, jintArray);
 
#ifdef __cplusplus
}
#endif
#endif
The C++ implementation file SortArray.cpp will be:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "SortArray.h"
#include "jni.h"
 
/*
* Class: SortArray
* Method: sort
* Signature: ([I)[I
*/

JNIEXPORT jintArray JNICALL Java_SortArray_sort
(JNIEnv *env, jobject obj, jintArray arr){
 
jsize arrLength = env->GetArrayLength(arr);
jintArray arrSorted = env->NewIntArray(arrLength);
 
jint *arrOut = NULL;
arrOut = env->GetIntArrayElements(arr, 0);
 
for(jsize x = 0; x < arrLength; x++){
for(jsize y = 0; y < arrLength - 1; y++){
if(arrOut[y] > arrOut[y+1]){
jsize temp = arrOut[y+1];
arrOut[y+1] = arrOut[y];
arrOut[y] = temp;
}
}
}
 
env->SetIntArrayRegion(arrSorted, 0, arrLength, arrOut);
env->ReleaseIntArrayElements(arr, arrOut, 0);
 
return arrSorted;
}
[Android NDK ] Passing JNI Arrays 4.5 5 Thanh Nguyen 1 2 3 4 5 6 7 8 9 JNIExport jint JNICALL Java_IntArray_sumArray ( JNIEnv * env , jobject obj , jintArray arr ) { jsize len = * env ->...


No comments:

Post a Comment

NEW GAME

Powered by Blogger.

Labels

Quotes

1. Những cô gái giống như những tên miền Internet, những tên đẹp mà ta thích đã có chủ nhân rồi!


Popular Posts