audiorecorderにアクセスできません
-
30-09-2019 - |
質問
私はサービスからの音の圧力レベルを見つけるために小さな録音を取ろうとしていますが、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が適切に作成されることはないため、最後に到達してRecordStance.startRecording()を呼び出すと、RecordInstanceはまだnullです。 Androidは、定義で私のプログラムリクエストを拒否します。 Errnoが示すものを知っている人はいますか?オンラインでリストが見つかりませんでした。
ありがとう
解決
3つのことを確認してください:
あなたの権限(あなたはrecord_audioの許可を与える必要があります)
これを一度実行しましたが、RecordStance.Release()と呼ばれませんか?もしそうなら、あなたはオーディオリソースを縛り付けたかもしれません、そして、あなたが電話を再起動するまでそれはおそらく動作しないでしょう。とにかく私の経験でそれを見つけました。
3.バッファサイズ。静的な方法がありますaudiorecord.getminbuffersize()
所属していません StackOverflow