Intereting Posts
Как создать контекстное меню с помощью XML-файла? Как вы можете прокручивать LinearLayout? Что такое обезьяна, которая возится с моим телефоном Android? Как установить предварительный просмотр в видеообъявлении перед воспроизведением Как заставить Admob обновляться на Android Установка targetSdkVersion = "13" заставляет действия игнорировать android: configChanges = флаг "orientation" Проблема со временем буферизации MediaPlayer при потоковой передаче аудио Почему элемент управления Spinner все еще отображает информацию о подсказке, даже если событие setOnItemSelectedListener после setSelection? EditText теряет содержимое при прокрутке в ListView Двухсторонняя синхронизация файлов cookie между HttpURLConnection (java.net.CookieManager) и WebView (android.webkit.CookieManager) Как открыть приложение для Android, если оно установлено, и перейти на рынок Android, если не установить Как я могу полностью скрыть идентификатор группы ExpandableListView? Android Удалите клавиатуру при касании списка Как подключить личные данные к событию календаря Android Показать задний стек Android

<AudioRecord> "Не удалось получить аудиовход для источника записи 1"

У меня AudioRecord проблема с инициализацией AudioRecord для Android. Я искал довольно долгое время в Интернете без успеха.

Для телефона я использую Samsung GalaxyS на SDK версии 7. Для инициализации AudioRecord я использую 8000 в качестве частоты дискретизации, MONO для конфигурации канала, 16 бит для аудиоформата, и, согласно журналу, 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.

Любая помощь, пожалуйста? Большое спасибо!

Solutions Collecting From Web of "<AudioRecord> "Не удалось получить аудиовход для источника записи 1""

Для меня причиной было неспособность вызвать AudioRecord.release () для предыдущего экземпляра AudioRecord; Он связал собственные ресурсы в AudioFlinger и вмешался в последующие экземпляры AudioRecord. Увидел его на Samsung Fascinate (Galaxy S) Android 2.1 (Eclair); Либо Eclair, либо реализация Samsung могут быть особенно нетерпимыми.

Произошла такая же ошибка, пока я не перезапустил устройство.

Кажется, что на моей Galaxy S родной импс не работает: несколько раз приобретать и выпускать AudioRecorder (в течение всего времени работы телефона) вызывает эту ошибку.

После использования аудиомагнитофона вы должны остановить и отпустить его. Затем, когда вы запустите аудиозапись в следующий раз, все в порядке.

Привет, у меня была такая же проблема при попытке инициализации объекта AudioRecord, и решение, которое я нашел, это проверить параметр конфигурации, прежде чем пытаться создать экземпляр текущего объекта AudioRecord. Вот что я использовал:

  /** * Scan for the best configuration parameter for AudioRecord object on this device. * Constants value are the audio source, the encoding and the number of channels. * That means were are actually looking for the fitting sample rate and the minimum * buffer size. Once both values have been determined, the corresponding program * variable are initialized (audioSource, sampleRate, channelConfig, audioFormat) * For each tested sample rate we request the minimum allowed buffer size. Testing the * return value let us know if the configuration parameter are good to go on this * device or not. * * This should be called in at start of the application in onCreate(). * * */ public void initRecorderParameters(int[] sampleRates){ for (int i = 0; i < sampleRates.length; ++i){ try { Log.i(TAG, "Indexing "+sampleRates[i]+"Hz Sample Rate"); int tmpBufferSize = AudioRecord.getMinBufferSize(sampleRates[i], AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); // Test the minimum allowed buffer size with this configuration on this device. if(tmpBufferSize != AudioRecord.ERROR_BAD_VALUE){ // Seems like we have ourself the optimum AudioRecord parameter for this device. AudioRecord tmpRecoder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRates[i], AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, tmpBufferSize); // Test if an AudioRecord instance can be initialized with the given parameters. if(tmpRecoder.getState() == AudioRecord.STATE_INITIALIZED){ String configResume = "initRecorderParameters(sRates) has found recorder settings supported by the device:" + "\nSource = MICROPHONE" + "\nsRate = "+sampleRates[i]+"Hz" + "\nChannel = MONO" + "\nEncoding = 16BIT"; Log.i(TAG, configResume); //+++Release temporary recorder resources and leave. tmpRecoder.release(); tmpRecoder = null; return; } }else{ Log.w(TAG, "Incorrect buffer size. Continue sweeping Sampling Rate..."); } } catch (IllegalArgumentException e) { Log.e(TAG, "The "+sampleRates[i]+"Hz Sampling Rate is not supported on this device"); } } } 

Я хоп эту помощь.

Dickwan

Это также влияет на вкладки GT-P1000 Sansung Galaxy и более поздние версии 10.1

Эта ошибка довольно трудно воспроизвести, и перезагрузка – это единственный способ избежать этого плохого состояния …

Есть ли отслеживание ошибок на samsung?

Если вы не приняли разрешение Record_Audio, тогда возьмите его, даже если вы получите ошибку, затем выключите мобильный телефон, а затем включите его, а затем запустите приложение.

Я думаю, что аппаратное обеспечение не может поддерживать до 10 каналов, которые вы устанавливаете как входные, поэтому попробуйте использовать 2 канала и посмотреть, может ли он работать.