應該是很簡單的,
從Java轉移ByteArray的C++,你可以考慮下面的例子:
步驟1:在java類,它會調用本地方法聲明的方法(在我的例子中一個簡單的zip)
private native byte[] jniZipString(byte[] unpackedData, int datasize);
第2步:在c + +生成頭和實現使用從箱櫃/類foler javah.exe [注]呼叫JAVAH(因爲你的編碼的Android
javah -jni com.example.JavaClassWithNativeMethods
步驟3:用C++接收字節數組和隱蔽於C++的bytearray
jbyte* tempPointer = env->GetByteArrayElements(jInput, 0);
const char* cinput = (const char*) tempPointer;
int dataSize = (int)env->GetArrayLength(jInput)
步驟4:在處理數據
whatever you do to process the bytearray
步驟5:將所得的字節數組返回到Java
jbyteArray result = (env)->NewByteArray(newDataSize);
(env)->SetByteArrayRegion(result, 0, newDataSize, (jbyte *) processedCharArray);
return result;
JNI中的字符串和數組在這裏覆蓋:http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnistring.html – 2012-07-16 19:35:11