2

Audio Record を使用してマイク入力を取得する Android 用のゲームを開発しました。

https://play.google.com/store/apps/details?id=fixappmedia.microをご覧ください。

問題は、電話で利用可能なサンプルレートを取得するために次の関数を使用していることです。

public int getValidSampleRates() {
            int r=8000;
            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_MONO, AudioFormat.ENCODING_PCM_16BIT);
                if (bufferSize > 0) {
                    r= rate;
                }
            }
            return r;
        }

最初に自分の電話 (Samsung Galaxy Vibrant) でテストしたところ、かなりうまく機能しました... しかし、今日、Samsung Galaxy Ace でテストしたところ、サンプルレートが機能しませんでした...

理由についてのアイデアはありますか?

4

2 に答える 2

1

ドキュメントからhttp://developer.android.com/reference/android/media/AudioRecord.html

ヘルツで表されるサンプルレート。44100Hz は現在、すべてのデバイスで動作することが保証されている唯一のレートですが、一部のデバイスでは 22050、16000、および 11025 などの他のレートが動作する可能性があります。

また、ドキュメントhttp://developer.android.com/reference/android/media/AudioFormat.htmlに従って廃止された AudioFormat.CHANNEL_CONFIGURATION_MONO を使用していることにも気付きました

この定数は API レベル 5 で廃止されました。代わりに CHANNEL_OUT_MONO または CHANNEL_IN_MONO を使用してください。

幸運を

于 2015-05-21T10:19:58.627 に答える