質問

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

alt text

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

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が適切に作成されることはないため、最後に到達してRecordStance.startRecording()を呼び出すと、RecordInstanceはまだnullです。 Androidは、定義で私のプログラムリクエストを拒否します。 Errnoが示すものを知っている人はいますか?オンラインでリストが見つかりませんでした。

audiorecord docs

ありがとう

役に立ちましたか?

解決

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

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

  2. これを一度実行しましたが、RecordStance.Release()と呼ばれませんか?もしそうなら、あなたはオーディオリソースを縛り付けたかもしれません、そして、あなたが電話を再起動するまでそれはおそらく動作しないでしょう。とにかく私の経験でそれを見つけました。

3.バッファサイズ。静的な方法がありますaudiorecord.getminbuffersize()

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top