Урок 129. Медиа. Запись звука с помощью MediaRecorder

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение damager82 » 23 июн 2013, 23:00

В этом уроке:
- пишем звук с помощью MediaRecorder


Click here to read this article!
Последний раз редактировалось damager82 26 май 2017, 13:46, всего редактировалось 4 раза.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

sprut27
Сообщения: 3
Зарегистрирован: 24 июн 2013, 22:50

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение sprut27 » 24 июн 2013, 22:58

Спасибо за урок! Интересно, есть ли возможность как-то регулировать громкость записи? В документации не нашел таких методов, хотя по идее должны бы быть.

Vladislav
Сообщения: 5
Зарегистрирован: 27 июн 2013, 07:37

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Vladislav » 27 июн 2013, 07:47

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

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение klblk » 27 июн 2013, 09:07

Vladislav писал(а):Здравствуйте. Подскажите, пожалуйста, как можно осуществить запись проигрываемых звуков в файл? Например, есть приложение, где есть несколько кнопок, каждая выдает разный звук. Я хочу записать последовательность этих звуков в отдельный файл с последующей возможностью воспроизведения. Буду очень благодарен за любую помощь по этому вопросу.
Пианину под андройд пишите?)
Может поможет что-то типа:
http://stackoverflow.com/questions/6538 ... -from-java

Vladislav
Сообщения: 5
Зарегистрирован: 27 июн 2013, 07:37

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Vladislav » 27 июн 2013, 12:31

Статья интересная, но, к сожалению, она не про то. Мне нужно записать музыкальный файл в самом приложении, а не работать с уже существующим файлом.

Vladislav
Сообщения: 5
Зарегистрирован: 27 июн 2013, 07:37

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Vladislav » 27 июн 2013, 13:45

Еще интересует такой вопрос: как можно установить звук из папки res/raw в качестве рингтона/будильника/смс ?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение KamiSempai » 27 июн 2013, 16:09

Vladislav писал(а):Еще интересует такой вопрос: как можно установить звук из папки res/raw в качестве рингтона/будильника/смс ?
Никак. Будильник и все остальные не имеют доступа к внутренним ресурсам другого приложения.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Vladislav
Сообщения: 5
Зарегистрирован: 27 июн 2013, 07:37

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Vladislav » 28 июн 2013, 05:14

KamiSempai писал(а):
Vladislav писал(а):Еще интересует такой вопрос: как можно установить звук из папки res/raw в качестве рингтона/будильника/смс ?
Никак. Будильник и все остальные не имеют доступа к внутренним ресурсам другого приложения.
Уже не нужно, сам нашел как это сделать:) Если кому будет нужно, то кину ссылку.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение KamiSempai » 28 июн 2013, 10:30

Vladislav писал(а):Уже не нужно, сам нашел как это сделать:) Если кому будет нужно, то кину ссылку.
Мне интересно.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Vladislav
Сообщения: 5
Зарегистрирован: 27 июн 2013, 07:37

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Vladislav » 01 июл 2013, 06:46

KamiSempai писал(а):
Vladislav писал(а):Уже не нужно, сам нашел как это сделать:) Если кому будет нужно, то кину ссылку.
Мне интересно.
http://stackoverflow.com/questions/8314 ... -exception - здесь написан код, который дает это сделать.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение KamiSempai » 01 июл 2013, 11:25

Vladislav писал(а):http://stackoverflow.com/questions/8314 ... -exception - здесь написан код, который дает это сделать.
Это не совсем из папки res. ;)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

paw
Сообщения: 1
Зарегистрирован: 14 дек 2012, 15:48

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение paw » 02 июл 2013, 10:45

А возможно ли в качестве источника звука указать USB гарнитуру?

ffiillffww
Сообщения: 1
Зарегистрирован: 23 сен 2013, 14:27

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение ffiillffww » 23 сен 2013, 14:39

При нажатии на кнопку Start (record) в логе появляется ошибка MediaRecorder start failed: -2147483648.
Лог с момента старта программы:

Код: Выделить всё

10-23 06:38:31.510: I/ActivityManager(186): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=ru.startandroid.develop.p1291_mediarecorderaudio/.MainActivity} from pid 404
10-23 06:38:31.670: D/dalvikvm(186): GC_CONCURRENT freed 1067K, 33% free 10196K/15175K, paused 4ms+10ms
10-23 06:38:31.760: D/OpenGLRenderer(404): Flushing caches (mode 1)
10-23 06:38:31.780: D/OpenGLRenderer(404): Flushing caches (mode 0)
10-23 06:38:31.820: W/InputManagerService(186): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@41067898 (uid=10035 pid=404)
10-23 06:38:31.850: I/ActivityManager(186): Displayed ru.startandroid.develop.p1291_mediarecorderaudio/.MainActivity: +176ms
10-23 06:38:48.850: E/MediaProfiles(73): getInstance
10-23 06:38:48.850: E/MediaProfiles(73): getInstance 1ba0208
10-23 06:38:48.850: V/CedarXRecorder(73): Constructor
10-23 06:38:48.850: V/CedarXRecorder(73): reset
10-23 06:38:48.850: D/sun4i_audio_hardware(73): to malloc in-buffer: period_size: 1024, frame_size: 2
10-23 06:38:48.860: E/OMXCodec(73): Attempting to allocate OMX node 'OMX.TI.AMR.encode'
10-23 06:38:48.860: E/OMXCodec(73): Attempting to allocate OMX node 'AMRNBEncoder'
10-23 06:38:48.860: E/MediaRecorder(22873): start failed: -2147483648
10-23 06:38:48.860: W/System.err(22873): java.lang.RuntimeException: start failed.
10-23 06:38:48.860: W/System.err(22873): 	at android.media.MediaRecorder.native_start(Native Method)
10-23 06:38:48.860: W/System.err(22873): 	at android.media.MediaRecorder.start(MediaRecorder.java:704)
10-23 06:38:48.860: W/System.err(22873): 	at ru.startandroid.develop.p1291_mediarecorderaudio.MainActivity.recordStart(MainActivity.java:41)
10-23 06:38:48.860: W/System.err(22873): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-23 06:38:48.860: W/System.err(22873): 	at java.lang.reflect.Method.invoke(Method.java:511)
10-23 06:38:48.860: W/System.err(22873): 	at android.view.View$1.onClick(View.java:3039)
10-23 06:38:48.870: W/System.err(22873): 	at android.view.View.performClick(View.java:3511)
10-23 06:38:48.870: W/System.err(22873): 	at android.view.View$PerformClick.run(View.java:14105)
10-23 06:38:48.870: W/System.err(22873): 	at android.os.Handler.handleCallback(Handler.java:605)
10-23 06:38:48.870: W/System.err(22873): 	at android.os.Handler.dispatchMessage(Handler.java:92)
10-23 06:38:48.870: W/System.err(22873): 	at android.os.Looper.loop(Looper.java:137)
10-23 06:38:48.870: W/System.err(22873): 	at android.app.ActivityThread.main(ActivityThread.java:4575)
10-23 06:38:48.870: W/System.err(22873): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-23 06:38:48.870: W/System.err(22873): 	at java.lang.reflect.Method.invoke(Method.java:511)
10-23 06:38:48.870: W/System.err(22873): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-23 06:38:48.880: W/System.err(22873): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-23 06:38:48.880: W/System.err(22873): 	at dalvik.system.NativeStart.main(Native Method)
10-23 06:39:18.010: W/ThrottleService(186): unable to find stats for iface rmnet0

Dronja
Сообщения: 12
Зарегистрирован: 05 сен 2013, 17:34

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Dronja » 12 ноя 2013, 11:58

Интересует такой вопрос: мое приложение записывает звук, при этом невозможно нормально разговаривать по скайпу. Как прекращать запись, когда начинается разговор по скайпу?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение trew » 12 ноя 2013, 12:05

Dronja писал(а):Интересует такой вопрос: мое приложение записывает звук, при этом невозможно нормально разговаривать по скайпу. Как прекращать запись, когда начинается разговор по скайпу?
Нужно добавить слушателя, который будет реагировать на событие.
А на какое событие, если у Вас скайп всё время запущен? :)
смотрите в сторону BroadcastReceiver, только какое событие ловить, думайте.
Запуск скайпа - можно отследить, если покопаться в интернете, а вот начало разговора ...
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Dronja
Сообщения: 12
Зарегистрирован: 05 сен 2013, 17:34

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Dronja » 12 ноя 2013, 12:13

trew писал(а):Нужно добавить слушателя, который будет реагировать на событие.
А на какое событие, если у Вас скайп всё время запущен? :)
смотрите в сторону BroadcastReceiver, только какое событие ловить, думайте.
Запуск скайпа - можно отследить, если покопаться в интернете, а вот начало разговора ...
спасибо за ответ. Событие я нашел - уведомления от скайп. Интересует как немедленно прекратить запись?
Запись ведется по 3 мин (можно через setMaxDuration(time) или Thread.sleep(time)). Я в цикле проверяю не наступило ли событие, если да - то запись останавливается. При этом возможна ситуация, что событие наступит в течении тех 3 мин записи, и скайп не заработает. Как быть?

Istomix
Сообщения: 1
Зарегистрирован: 12 сен 2013, 08:38

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение Istomix » 24 янв 2014, 23:03

А как записать звуковой файл во внутреннюю память?

denis_po3
Сообщения: 14
Зарегистрирован: 01 ноя 2013, 15:45

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение denis_po3 » 20 июн 2014, 12:55

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

Код: Выделить всё

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setOutputFile(path);
Иные комбинации возвращают ошибку.

SPAWN
Сообщения: 20
Зарегистрирован: 11 мар 2013, 21:59

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение SPAWN » 10 окт 2014, 14:13

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

EdgarTomasov
Сообщения: 1
Зарегистрирован: 12 дек 2014, 15:21

Re: Урок 129. Медиа. Запись звука с помощью MediaRecorder

Сообщение EdgarTomasov » 12 дек 2014, 15:25

Здравствуйте.

Прочитал урок. Огромное спасибо Вам, как всегда.
Вопрос мой заключается вот в чем: каким образом можно записывать голос с микрофона и звук из динамика при разговоре?
Буду очень благодарен за помощь.
Еще было бы великолепно глянуть на пример ))

С уважением,
Томасов Эдгар Игоревич

Ответить