はい、Androidはそれをチェックするための明示的なメソッドを提供していませんが、AudioRecordクラスのgetMinBufferSize関数による回避策があります。
public void getValidSampleRates() {
for (int rate : new int[] {8000, 11025, 16000, 22050, 44100}) { // add the rates you wish to check against
int bufferSize = AudioRecord.getMinBufferSize(rate, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, AudioFormat.ENCODING_PCM_16BIT);
if (bufferSize > 0) {
// buffer size is valid, Sample rate supported
}
}
}
関数の説明をチェックした場合、入力されたパラメーターの1つがサポートされていない場合は、負の値を返します。他のすべての入力を有効として入力すると仮定すると、サンプルレートがサポートされていない場合は、負のバッファーサイズが返されると予想されます。
ただし、サンプリングレートがサポートされていない場合でも正の値を返しているとの報告があったため、AudioRecordオブジェクトを初期化して追加のチェックを行うと、そのサンプリングレートを処理できないと判断した場合にIllegalArgumentExceptionがスローされます。
最後に、それらのいずれも保証されたチェックを提供しませんが、両方を使用すると、サポートされているチェックを取得する可能性が高くなります。
ほとんどの場合、44100と48000は私にとっては機能しますが、もちろん、デバイスごとに異なります。