Проблемы с установкой класса аудио источника MediaRecorder - setAudioSource () - неподдерживаемый параметр - PullRequest
4 голосов
/ 09 июня 2010

Я новичок в разработке для Android и у меня следующий вопрос / проблема.

Я играю с классом MediaRecorder, чтобы записывать только звук с микрофона. Я следую инструкциям, указанным на официальном сайте: http://developer.android.com/reference/android/media/MediaRecorder.html

Итак, у меня есть метод, который инициализирует и настраивает объект MediaRecorder для начала записи. Здесь у вас есть код:


        this.mr = new MediaRecorder();
        this.mr.setAudioSource(MediaRecorder.AudioSource.MIC);
        this.mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        this.mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        this.mr.setOutputFile(this.path + this.fileName);
        try {
            this.mr.prepare();
        } catch (IllegalStateException e) {
            Log.d("Syso", e.toString());
            e.printStackTrace();
        } catch (IOException e) {
            Log.d("Syso", e.toString());
            e.printStackTrace();
        }

Когда я выполняю этот код в симуляторе, благодаря logcat, я вижу, что метод setAudioSource (MediaRecorder.AudioSource.MIC) выдает следующую ошибку (с тегом audio_ipunt) при его вызове:


ERROR/audio_input(34): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value
ERROR/audio_input(34): VerifyAndSetParameter failed

И затем, когда вызывается метод prepare (), я снова получаю еще одну ошибку:


ERROR/PVOMXEncNode(34): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle 

Если я начинаю запись, вызывая метод start () ... я получаю множество сообщений, говорящих:


AudioFlinger(34):RecordThread: buffer overflow

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

Я предполагаю, что ключ к этим ошибкам, которые я упоминал ранее. Как я могу их исправить? Любое предложение или помощь ??

Ответы [ 3 ]

1 голос
/ 27 января 2013

Примечание. Эмулятор Android не поддерживает захват звука, но реальные устройства, вероятно, предоставляют эти возможности.

Ссылка: http://developer.android.com/guide/topics/media/audio-capture.html

1 голос
/ 14 июня 2010

У симулятора много проблем с записью звука.Допустим, это не работает.Лучше всего попробовать код на реальном устройстве !!!

0 голосов
/ 01 декабря 2010

Хорошо, я довольно новичок в этом программировании для Android, но я дам вам, ребята, что я до сих пор узнал об этом.В нескольких ответах здесь говорится, что у них есть проблемы на реальных устройствах, в основном на galaxy S, и эмулятор / виртуальное устройство тоже не работает.Ну, я прочитал из Google, что виртуальное устройство не поддерживает аудиозапись прямо сейчас.Это может или не может быть все еще точным.Тем не менее, гораздо более опытный программист Android сказал мне, что нет никаких оснований полагать, что между устройствами существует нечто сходное с аппаратным обеспечением, поскольку в настоящее время Android доступен на очень многих устройствах.Кроме того, каждая операционная система Android немного изменена, чтобы обслуживать каждое устройство, поэтому, хотя Droid и Droid X могут работать под управлением Android Froyo, версии Froyo немного отличаются.При этом, возможно, у Galaxy S немного другой метод вызова для микрофона или что-то в этом роде.Моим тестовым устройством является MotoDroid, поэтому я не уверен в этом, извините.Но я надеюсь, что это немного поможет!

РЕДАКТИРОВАТЬ: мой плохой, эмулятор поддерживает запись звука.

...