Intereting Posts
Как изменить цвет текста категории предпочтений в Android? Оффлайн-возможности Firebase и addListenerForSingleValueEvent Неподходящая высота шрифта Roboto Как я могу изменить по умолчанию черный тусклый фон «цвет» (не размер тусклого) диалогового окна? Android – Как подсчитать время в течение длительного периода Выполняются ли пользовательские объекты по значению или переданы по ссылке в разделе «Фрагменты и действия».? Android – Выполнение остановки активности, которая не возобновляется Получить информацию из пакета JSON Как правильно выровнять курсор EditText? Служба Media Media Player не работает после публикации Как избавиться от сильного накала Есть ли способ установить параметр базового запроса для включения в каждый запрос, сделанный с помощью библиотеки Square's Retrofit? Не удалось разрешить суперкласс класса Landroid / support / v4 / app / FragmentActivity Глобальная смерть AudioTrack Android: Как максимизировать ширину PreferenceFragment (или избавиться от поля)?

<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 канала и посмотреть, может ли он работать.