1

ここからコードを使用しようとしています 。両方のクラスを組み込んで、最終的に ulaw オーディオ データの inputStream を作成しようとしています。だから私は次のように UlawEncoderInputStream を編集しました:

private MicrophoneInputStream micIn;
public UlawEncoderInputStream() {
    mMax = 0;
    try {
            micIn = new MicrophoneInputStream(8000, 1);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

次に、その UlawEncoderInputStream の使用を試みます。

while(transmittingAudio) {
                        if(micInStream.available()>0) {
                            //              byte[] data = new byte[audioDump.available()];
                            int bytesRead = micInStream.read(data);
                            os.write(data,0,bytesRead);
                            os.flush();
                            //              ca.transmitAxisAudioPacket(data);
//                          System.out.println("read "+bytesRead);
                        }

ただし、MicrophoneInputStream の下部にある JNI ネイティブ ステートメントに問題があるようです。

private static native int AudioRecordNew(int sampleRate, int fifoDepth);

これに関するエラー:

05-14 14:46:48.544: W/dalvikvm(28658): ネイティブ Lcom/avispl/nicu/audio/MicrophoneInputStream の実装が見つかりません;.AudioRecordNew (II)I

05-14 14:46:48.552: W/dalvikvm(28658): threadid=10: キャッチされない例外で終了するスレッド (グループ = 0x40018560)

05-14 14:46:48.552: E/AndroidRuntime(28658): 致命的な例外: スレッド 12

05-14 14:46:48.552: E/AndroidRuntime(28658): java.lang.UnsatisfiedLinkError: AudioRecordNew

05-14 14:46:48.552: E/AndroidRuntime(28658): com.avispl.nicu.audio.MicrophoneInputStream.AudioRecordNew (ネイティブ メソッド) で

05-14 14:46:48.552: E/AndroidRuntime (28658): com.avispl.nicu.audio.MicrophoneInputStream で。(MicrophoneInputStream.java:27)

05-14 14:46:48.552: E/AndroidRuntime (28658): com.avispl.nicu.audio.UlawEncoderInputStream で。(UlawEncoderInputStream.java:111)

05-14 14:46:48.552: E/AndroidRuntime (28658): com.avispl.nicu.audio.AudioTransmitter.run (AudioTransmitter.java:66) で

4

2 に答える 2

1

これがあなたの質問のレベルをはるかに下回っている場合は申し訳ありません。私は疲れていて、あなたの質問を理解するのが難しいと感じています:

ネイティブメソッドを呼び出そうとしている場合AudioRecordNew

\ \static { System.loadLibrary("cLibraryName"); }を使用して構築したネイティブ ライブラリをロードするには、 を実行する必要があります。android-ndkAndroid.mkApplication.mk

c++ファイル(およびファイルh)には次のようなメソッドが必要です。

JNIEXPORT void JNICALL Java_com_company_package_JavaFile_AudioRecordNew(JNIEnv* env, jobject obj, jint arg0, jint arg1)     
{

}

上記のすべてを行うネイティブ ライブラリがない限り、ネイティブ ライブラリが存在しないというエラーが表示されます。(これは、ここにある問題のように見えます。例で使用されている Java ネイティブ ライブラリがありません)。

ただし、ネイティブ ライブラリのソース コードを入手できる場合は、上記に従ってライブラリの Android バージョンをビルドし、作業を続けることができます。

于 2012-05-16T14:24:31.737 に答える
0

現在はサポートされていないと思いますここを参照してください

繰り返して申し訳ありませんが、Dianne は次のように述べています。あなたは将来壊れます。

于 2012-05-15T19:28:51.110 に答える