次のコードを使用して、アプリでボイスメッセージのオーディオを録音しています。
MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
audioRecorder.setOutputFile(audioRecordingFile);
audioRecorder.prepare();
audioRecorder.start();
MediaRecorder.AudioSource.MICの代わりにMediaRecorder.AudioSource.VOICE_COMMUNICATIONを使用すると、前処理されたクリーンなオーディオを録音するのに非常に役立ちます。
しかし最近、記録されたファイルが空であるといういくつかの問題が最近Android 10に更新されたいくつかのデバイスで報告されていることに気付きました。すべてのAndroid 10デバイスにこれらの問題があるわけではなく、いくつか、つまりNokia 6.1とミA2。
エラーや例外はなく、空のオーディオ出力ファイルのみです。
MediaRecorder.AudioSource.MICを使用した場合)、問題は発生しません。
Android 10とVOICE_COMMUNICATIONに関連する次の情報が見つかりました。Android10 リリースには、VOICE_COMMUNICATIONでキャプチャするための次の要件が含まれています。
これに基づいて、次のコードを使用して、AcousticEchoCanceler、AutomaticGainControl、およびNoiseSuppressorの可用性を確認しました。
AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()
そして、Android 10搭載のMi A2とOnePlus 6でも同じ結果が見つかりました。どちらのデバイスでも、AcousticEchoCancelerとNoiseSuppressorが利用可能であり、AutomaticGainControlが利用不可能であることが示されています。
この問題はすべてのAndroidデバイスに存在するわけではないので、MediaRecorder.AudioSource.MIC)の使用に頼りたくありません。同時に、MediaRecorder.AudioSource.MICにフォールバックするタイミングを通知するエラー、例外、または差別化要因はありません。
更新: この問題は、Mi A2でGoogleアシスタントをオフにすると解決します。これはポインタである可能性があります:https : //developer.android.com/guide/topics/media/sharing-audio-input
これに関するどんな助けでもありがたいです。