«Не удалось получить аудиовход для источника записи 1» при попытке инициализировать AudioRecord

Я продолжаю получать эту ошибку при попытке инициализации и объекта AudioRecord, пытаясь записать звуки с использованием эмулятора с помощью Eclipse.

Я пробовал с различными частотами дискретизации бит, 8000 является единственным, который действителен, но ошибка продолжает появляться. Я пробовал разные версии sdk, 1.5, 1.6, 2, 2.2 и 2.3.1. (И комбинации с AVD).

Вот код:

Log.v(TAG, "About to initialize recording"); //int[] samplingRates = {44100, 22050, 16000, 11025, 8000}; int[] samplingRates = {8000}; for (int i = 0; i < samplingRates.length; ++i) { try { Log.d(TAG,"Trying sampling rate: " + samplingRates[i]); int min = AudioRecord.getMinBufferSize(samplingRates[i], AudioFormat.CHANNEL_CONFIGURATION_MONO, //AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); Log.d(TAG,"MinBufferSize: " + min); AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.MIC, samplingRates[i], AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, min); if (record.getState() == AudioRecord.STATE_INITIALIZED) { Log.d("Recorder", "Audio recorder initialised at " + record.getSampleRate()); return record; } record.release(); record = null; } catch (IllegalArgumentException e) { // Try the next one. Log.d(TAG,"Initialization failed"); } } // None worked. return null; 

Ошибка возникает при создании экземпляра, AudioRecord record = new и т. Д.

Кто-нибудь видел эту проблему, кажется, прямой запрос, поэтому я удивлен, если это ошибка, особенно, поскольку я не могу заставить ее работать с разными версиями.

Я создал AVD с возможностями записи звука. Есть ли что-то еще, что мне нужно настроить?

Я видел пару других сообщений по одной и той же проблеме, но ответов нет.

заранее спасибо

Крис

Вы проблема здесь, вероятно, на самом деле в два раза. Во-первых, вы должны получить все параметры, подходящие только для AudioRecord, т. Е. Я вижу, что вы пробовали все различные частоты дискретизации и конфигурации каналов, но вы пробовали разные битовые глубины? Если вы не получите все в порядке, это не сработает. Кроме того, похоже, что некоторые устройства Android сообщают о неправильном minBufferSize.

Но я думаю, что фактическая проблема, с которой вы сталкиваетесь, заключается в том, что AVD не могут записывать аудио / видео (даже если они не могут жаловаться, если вы его настроите): http://developer.android.com/guide/topics/media/index .html

Из пункта 3:

Обратите внимание, что эмулятор не имеет оборудования для захвата аудио или видео, но фактические мобильные устройства, скорее всего, предоставят эти возможности, доступные через класс MediaRecorder.

Для меня на устройстве Samsung это работает с простое изменение AudioFormat.CHANNEL_IN_MONO

или

 AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize);