AudioRecord не работает для Motorola Milestone - PullRequest
2 голосов
/ 04 мая 2010

У меня эта проблема только на Motorola Milestone. Код:

// init recorder
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
    8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT, 8000);

recordInstance.startRecording();

//more code here

recordInstance.stop();

У меня есть информация об ошибке (на данный момент я не могу найти больше, так как у меня нет вехи для отладки):

Uncaught handler: thread main exiting due to uncaught exception
java.lang.IllegalStateException: stop() called on an uninitialized AudioRecord.
at android.media.AudioRecord.stop(AudioRecord.java:51 6)

Очевидно, я не единственный, кто имеет эту проблему. Некоторые очень похожие темы, которые я нашел (без решения):

http://groups.google.com/group/android-developers/browse_thread/thread/6dd24aeb484b2e40 http://web.archive.org/web/20100824043744/http://androidcommunity.com:80/forums/f2/problem-using-audiorecord-in-motorola-milestone-30935/ http://community.developer.motorola.com/t5/Android-App-Development-for/Problem-using-AudioRecord-on-Milestone-device/m-p/3889 http://www.fring.com/forums/showthread.php?t=16194 http://groups.google.com/group/android-developers/browse_thread/thread/63be273ba59c635e/1c4a010fd470d328

Ответы [ 4 ]

1 голос
/ 04 января 2011

Это должно работать:

recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, 16000);

Просто придерживайтесь стандартной частоты дискретизации http://en.wikipedia.org/wiki/Sampling_rate#Audio. Интересно, почему Milestone не поддерживает запись с 8-битным кодированием. Это также дает мне ошибку - «Неверный формат аудио».

0 голосов
/ 11 октября 2018

Теоретически, код hcpl должен работать, потому что выборка речи составляет 8 кГц, но некоторые устройства Android не принимают его.

Завершение безумного ответа с сайта разработчиков Android:

sampleRateInHz int: частота дискретизации, выраженная в герцах. 44100 Гц это на данный момент единственная ставка, которая гарантированно работает на всех устройствах, но другие скорости, такие как 22050, 16000 и 11025, могут работать на некоторых устройствах. AudioFormat.SAMPLE_RATE_UNSPECIFIED означает использование зависимого от маршрута значение, которое обычно является частотой дискретизации источника. getSampleRate () может использоваться для извлечения фактической выбранной частоты дискретизации.

0 голосов
/ 29 марта 2011

Проблема не в параметрах, проблема в исправлении Motorola Android, AudioRecord не создаст себя должным образом, если режим IN_CALL, если его MODE_NORMAL, то все должно быть в порядке.

Это связано с тем, что что-то в коде Motorolas задерживает ввод в режиме IN_CALL.

0 голосов
/ 04 мая 2010

Во-первых, как говорится, попробуйте поставить блок try catch поверх стопа, как говорится в сообщении отладки, запись попадает в IllegalState.

Возможно, если вы поймаете исключение, вы сможете узнать, в чем проблема.

...