ここからコードを使用しようとしています 。両方のクラスを組み込んで、最終的に 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) で