5

サービスから音圧レベルを見つけるために小さな録音をしようとしていますが、Androidはハードウェアへのアクセスを許可しません。Logcatで次のエラーが発生します。

代替テキスト

エラーは次のコードから発生します。

AudioRecord recordInstance = null;

    // We're important...
    android.os.Process
            .setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);

    short bufferSize = 4096;// 2048;


    recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, this //line 167
            .getFrequency(), this.getChannelConfiguration(), this
            .getAudioEncoding(), bufferSize); //object not created

    tempBuffer = new short[bufferSize];
    recordInstance.startRecording();

何が起こるかというと、recordInstanceが適切に作成されないため、最後に到達してrecordInstance.startRecording()を呼び出しても、recordInstanceはnullのままです。Androidは、定義で私のプログラム要求を拒否します。誰かがそれらのerrnoが何を示しているか知っていますか?オンラインでリストが見つかりませんでした。

AudioRecordドキュメント

ありがとう

4

1 に答える 1

19

3つのことを確認してください。

  1. あなたの許可(RECORD_AUDIOの許可を与える必要があります)

  2. これを一度実行して、recordInstance.release()を呼び出さなかったことがありますか?もしそうなら、あなたはオーディオリソースを拘束しているかもしれません、そしてあなたが電話を再起動するまでそれはおそらく機能しないでしょう。とにかく私の経験でそれを見つけました。

3.バッファサイズ。静的メソッドAudioRecord.getMinBufferSize()があります

于 2010-12-23T05:01:11.403 に答える