Не смог записать с Samsung Galaxy S2, но мог записать с другими телефонами с MIC

StackOverflow https://stackoverflow.com/questions/7822848

Вопрос

Однако мое приложение не могло записать в Samsung Galaxy S 2 из MIC, оно записывалось в других телефонах от MIC.

Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

В моем коде я выбираю тип источника от 0 до 4, выберите тип Encoder как AMR-NB, AMR-WB, AAC или по умолчанию, выберите тип формата выходного сигнала как .3GP, .MP4 или .AMR, а также выберите аудиоканал Как 1 или 2. Я пробую все комбинации, которые встают. По крайней мере, одна из комбинаций работает во многих телефонах. Но ни один из них не мог работать в Samsung Galaxy S 2. Он записывает файл, и продолжительность записи правда, но голос - только молчание!

В своем исследовании в Интернете с этой проблемой я обнаружил, что это может быть получено из типа микрофона. Хотя в своем коде я выбираю тип источника аудио в качестве по умолчанию, микрофону, голосовой нисходящей линии, голосовой линии, голосовой вызове, он не может работать. Затем я установил тип источника звука как на это 0, 1, 2, 3, 4 вместо MediareCorder.Audiosource.MIC и т. Д., Но это также не могло работать ...

Это было полезно?

Решение

У меня были проблемы на S2, где приложение будет блокировать микрофон, и он не выпустит его, особенно если вы делаете быстрые циклы разработки, где вы блокируете и выпускаете микрофон так же, когда вы удаляете приложение (и переустановите новая версия). Иногда он разблокируется через некоторое время, но верный способ убедиться, что микрофон доступен - перезапустить телефон после неудачной попытки.

Я смог записать аудио, используя следующие настройки в AudioRecord объект:

int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
  MediaRecorder.AudioSource.MIC,               //audio source
  16000,                                       //16kHz sample rate
  AudioFormat.CHANNEL_IN_MONO,                 //channel
  AudioFormat.ENCODING_PCM_16BIT,              //encoding
  buffer_size );                               //buffer size
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top