У меня возникла эта проблема с инициализацией AudioRecord
для Android. Я искал довольно долгое время в Интернете без успеха.
Для телефона я использую Samsung GalaxyS на SDK версии 7. Для инициализации AudioRecord
я использую 8000 в качестве частоты дискретизации, MONO для конфигурации канала, 16 бит для аудиоформата и в соответствии с log, для параметра minBufferSize установлено значение 4160. Я добавил в манифест разрешение AUDIO_RECORD.
Мой код для инициализации выглядит следующим образом:
...
private static int SAMPLE_RATE = 8000;
private static int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private static int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
// ??? Both 8Bit and Default are deemed illegal.
public MicVolumeManager() {
this.bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE,
CHANNEL_CONFIG, AUDIO_FORMAT);
PhoneDebugger.debug("AUDIO-BUFFER-SIZE",
Integer.toString(this.bufferSize));
this.recorder = new AudioRecord(AudioSource.MIC, SAMPLE_RATE,
CHANNEL_CONFIG, AUDIO_FORMAT, this.bufferSize);
this.audioBuffer = new byte[this.bufferSize];
}
...
Однако объект (this.recorder) не был инициализирован. В журнале используется DDMS:
АУДИО-БУФЕР-РАЗМЕР (3253): 4160
AudioRecord (3253): set(): sampleRate 8000, каналы 16, frameCount 2080
AudioPolicyManager (2175): getInput() inputSource 1, samplingRate 8000, формат 1, каналы 10, акустика 0
AudioFlinger (2175): openInput() openInputStream возвращает вход 0x0, SamplingRate 8000, формат 1, каналы 10, акустика 0, статус -17
AudioRecord (3253): Не удалось получить аудиовход для источника записи 1
AudioRecord-JNI (3253): Ошибка при создании экземпляра AudioRecord: проверка инициализации завершилась неудачно.
AudioRecord-Java (3253): [android.media.AudioRecord] Код ошибки -20 при инициализации собственного объекта AudioRecord.
Любая помощь, пожалуйста? Большое спасибо!