1

私はAndroidプログラミングの世界では初めてであり、AndroidでのJNIの実装についてインターネットで完全に検索しました。ちなみに、それを行う方法はたくさんありますが、Android用のC /C++でのDSPに関するドキュメントはあまりありません。

録音(PCMからfloat)からオーディオデータをすでに取得しているので、このデータをC /C++関数に送信してこのデータを処理したいと思います。変換後、配列をJavaアクティビティに戻して、結果を再生したいと思います。JNIを使​​用したアレイの送受信に関する簡単な例やドキュメントはありますか?

私はWindows7、Eclipse、Cygwinを使用しています。

前もって感謝します

4

1 に答える 1

0

非常に単純なはずです、

byteArrayをJavaからC++に転送するには、次の例を検討してください。

ステップ1:ネイティブメソッドを呼び出すJavaクラスで、メソッドを宣言します(私の例では単純なzip)

private native byte[] jniZipString(byte[] unpackedData, int datasize);

ステップ2:C ++で、javah.exeを使用してヘッダーと実装を生成します[注] bin / classes folerからjavahを呼び出します(Androidのコーディング以降

javah -jni com.example.JavaClassWithNativeMethods

ステップ3:C ++でバイト配列を受け取り、C++バイト配列に変換します

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;
于 2012-07-16T23:35:32.880 に答える