Вопрос

У меня есть эта проблема только на 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/thrad/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-mileStone-device/mp/3889. http://www.fring.com/forums/showthread.php?t=16194. http://groups.google.com/group/android-developers/browse_thread/thrad/63be273ba59c635e/1c4a010fd470d328.

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

Решение

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

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битом кодировкой. Это также дает мне ошибку - «Недопустимый аудиоформат».

Другие советы

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

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

Проблема не является параметрами, проблема является ошибкой с использованием Android Motorola Android, AudioRecord не будет создаваться должным образом, если режим INOMENT INAGE_CALL, если он должен быть в порядке.

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

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

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

Samplerateinhz Int: частота дискретизации, выраженная в Герц. 44100HZ в настоящее время является единственным темпом, которая гарантированно работает на всех устройствах, но и другие тарифы, такие как 22050, 16000, и 11025, могут работать на некоторых устройствах. Audioformat.sample_rate_unspecified означает использование зависимого от маршрута значения, которое обычно является частотой образца источника. getsamplerate () можно использовать для извлечения фактической выбранной скорости образца.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top