2012-07-16 47 views
1

我是Android編程領域的新手,我已經在Internet上對Android中的JNI實現進行了全面搜索。順便說一句,有很多方法可以做到這一點,並且我沒有在Android的C/C++中找到關於DSP的太多文檔。在Java-Android和JNI之間發送/接收音頻數組

我已經從記錄中獲得音頻數據(PCM爲浮點數),並且我想將數據發送到C/C++函數來處理這些數據。轉換後,我想將該數組返回到Java活動以播放結果。有關於使用JNI發送和接收數組的簡單示例或文檔嗎?

我使用Windows 7,Eclipse和Cygwin。

預先感謝您

+0

JNI中的字符串和數組在這裏覆蓋:http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnistring.html – 2012-07-16 19:35:11

回答

0

應該是很簡單的,

從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; 
相關問題