Чтобы получить предпочтительный размер аудиобуфера и частоту дискретизации звука для данного устройства Android, вы можете выполнить следующий код Java:
// To get preferred buffer size and sampling rate.
AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
String rate = audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
String size = audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
Log.d("Buffer Size and sample rate", "Size :" + size + " & Rate: " + rate);
Можно ли сделать это на C/C++ вместо этого?
Если да, то как?
API openSLES, похоже, не предлагает эту функцию. Я заметил, что openSLES.h определяет структуру SLAudioInputDescriptor, а также SLAudioOutputDescriptor, но если это доступно на Android, я не уверен, как получить поддерживаемые частоты дискретизации микрофона и динамика. Кроме того, структура не содержит информации о предпочтительном размере буфера.