Voice uplink перевод на русский

.

voice uplink перевод

Диктофон — делаем запись с микрофона

2-й курс/Закрытая зона

android.media.MediaRecorder
Запускаем встроенный диктофон
Создаём свой диктофон
android.media.AudioRecord

android.media.MediaRecorder

Класс android.media.MediaRecorder позволяет делать записи записи медиафрагментов, включая аудио и видео. MediaRecorder действует как конечный автомат. Вы задаёте различные параметры, такие как устройство-источник и формат. После установки запись может выполняться как угодно долго, пока не будет остановлена.

Алгоритм записи

Сначала определимся с источником (свойство MediaRecorder.AudioSource):

  • MIC — встроенный микрофон
  • VOICE_UPLINK — исходящий голосовой поток при телефонном звонке (вы говорите)
  • VOICE_DOWNLINK — входящий голосовой поток при телефонном звонке (вам говорят)
  • VOICE_CALL — запись телефонного звонка
  • CAMCORDER — микрофон, связанный с камерой (если доступен)
  • VOICE_RECOGNITION — микрофон, используемый для распознавания голоса (если доступен)
  • VOICE_COMMUNICATION – аудио поток с микрофона будет «заточен» под VoIP (если доступен)

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

Далее определимся с форматом записываемого звука (свойство MediaRecorder.OutputFormat):

  • THREE_GPP — формат 3GPP
  • MPEG_4 — формат MPEG4
  • AMR_NB — формат AMR_NB (подходит для записи речи)
  • AMR_WB
  • RAW_AMR

Определимся с сжатием звука (свойство MediaRecorder.AudioEncoder).

Указываем путь к файлу, в котором будут сохранены аудиоданные (метод setOutputFile())

Подготавливаем и запускаем запись (методы prepare() и start()). Остановить запись можно при помощи метода stop().

Запускаем встроенный диктофон

Для начала попробуем запустить встроенный диктофон. Несмотря на то, что в эмуляторе нет значка приложения «Диктофон», он там есть. И мы можем запустить его с помощью намерения. Добавим на экран активности кнопку для запуска приложения и напишем код.

Запустив приложение Диктофон, вы можете записать сообщение и закрыть программу. Путь к файлу с аудиоданными вернётся в вашу программу через метод onActivityResult() и будет представлять строку типа external/audio/media/382. Вы можете поискать созданный файл в папке SD-карты. Но в любом случае у вас возникнут трудности с доступом к созданным файлам, так как вы не принимаете участия в процессе создания файла. Вам надо потрудиться, чтобы разобраться, как хранятся файлы, записанные в системном приложении. Я не стал показывать здесь, как вообще нужно узнать, где находится нужный файл. Кроме того, я видел сообщения на форумах, что данный метод вызывает ошибки на некоторых устройствах.

Создаём свой диктофон

Напишем простейший диктофон для записи мяуканья кота на микрофон.

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

Реклама

Полный текст статьи и исходники программы доступны только зарегистрированным участникам сайта.

Стоимость регистрации — символические 340 рублей.

Для регистрации сначала необходимо пополнить Яндекс.Кошелек 410011383280263 на указанную сумму (или Webmoney-кошелек R390884954122 или QIWI — 9055113963 (кошелек, не на счёт телефона!)), а затем прислать письмо на адрес alexander.klimoff@gmail.com с указанием, на какой кошелек вы делали оплату и реквизиты, по которым можно вас определить (не прикрепляйте к письму картинки или файлы). Учитывайте комиссию при переводах.

Не присылайте в письме мои номера кошельков — поверьте, я их знаю и без вас.

В ответном письме вы получите учётные данные для чтения статей из закрытой зоны за второй курс.

Доступ к третьему курсу обучения доступен только после оплаты второго курса и составляет 340 руб.

Доступ к чётвертому курсу обучения доступен после оплаты третьего курса и составляет 340 руб. и т.д.

При оплате сразу всех курсов одновременно (2-9) цена составит 2700 руб.

Доступ даётся как минимум на один год. Для тех, кто оплатил третий и другие курсы, сроки доступа увеличиваются.

Также возможен приём на PayPal (только для зарубежных пользователей). Обратите внимание, что в этом случае стоимость одного курса составляет 7$.

Подробнее об аудио форматах

Существует множество различных аудио форматов. Наиболее часто используются такие форматы как MP3 (MPEG-2 Audio Layer III) и WAV. Тип формата обычно определяется расширением файла (то, что идет после точки в имени файла .mp3, .wav, .ogg, .wma)

Кодек – это определенный алгоритм кодирования и сжатия данных в аудио-формат.

Что означает то или иной источник записи звонков?

Для некоторых типов файлов кодек однозначно определен. Например в формате mp3 всегда используется кодек MPEG Layer-3, а в формате mp4 могут быть использованы разные кодеки. 

Часто понятия кодека и формата используют в одном смысле.

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

Некоторые форматы, такие, например, как mp4 или flv могут содержать в себе как аудио, так и видео потоки. 

Если вы не знаете, какой программой открыть тот или иной аудио-формат, то советуем воспользоваться нашим аудио-конвертером. Он поддерживает почти все форматы. 

Кодеки разделить на два вида, в зависимости от типа сжатия:

Без потери качества звучания (lossless)

Данная группа форматов записывает кодирует звук таким образом, что при раскодировании он может быть в точности восстановлен. 

Наиболее популярные форматы кодирующие звук без потери качества:

  • FLAC (Free Lossless Audio Codec)
  • APE  (Monkey’s Audio)
  • ALAC (Apple Lossless Audio Codec)

С потерей качества звучания (lossy)

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

Популярные форматы с потерей качества:

Подробнее о популярных аудио-форматах

WAV – один из первых аудио-форматов. Обычно используется для хранения несжатых аудио-записей (PCM), идентичных по качеству звука записям на компакт-дисках (audio-CD). В среднем одна минута звука в формате wav занимает около 10 мегабайт. Часто в него копируют аудио-CD, а потом конвертируют в mp3 с помощью аудио конвертора.

MP3 (MPEG Layer-3) – набиолее распространенный в мире звуковой формат. MP3, как и многие другие форматы с потерей качества, урезает звук, который не слышится человеческим ухом, тем самым уменьшая размер файла. На текущий момент mp3 не является лучшим форматом по соотношению размера файла к качеству звучания, но в силу своей распространности и поддерживаемости большинством устройств, многие хранят свои записи именно в нем.

WMA (Windows Media Audio) – формат, принадлежащий компании Microsoft. Изначально данный формат был представлен, как замена MP3, имеющая, по заявлению Microsoft, более высокие характеристики сжатия. Но данный факт был поставлен под сомнения некоторыми независимыми тестами. Так же формат WMA поддерживает защиту данных через DRM.

OGG – открытый формат, поддерживающий кодирование аудио различными кодеками. Наиболее часто в ogg используется кодек Vorbis. По качеству сжатия формат сопоставим с MP3, но при этом менее распространен с точки зрения поддержки в аудио-проигрывателях и плеерах. 

AAC  – запатентованный аудио-формат, имеющий большие возможности (количество каналов, частоты дискретизации)  по сравнению с mp3 и дающий несколько лучшее звучание, при том же размере файла. На данный момент aac является одним из самых качественных алгоритмов кодирования звука с потерями. Формат поддерживается большинством устройств. Файл этого формата может иметь расширения aac, mp4, m4a, m4b, m4p, m4r. 

FLAC – популярный формат сжатия без потерь. Он не вносит изменений в аудио-поток и закодированный с его помощью звук идентичен оригиналу. Часто используеется для прослушивания звука на звуковых системах высокого уровня. Имеет огранченную поддержику устройствами и плеерами, поэтому обычно для того, чтобы слушать flac в плеере, его предварительно конвертируют.

AudioManager

Управление громкостью и воспроизведением

Управление аудиофокусом

Управление микрофоном

Использование динамиков

Класс AudioManager предназначен для управления громкостью звука и телефонных мелодий. При разработке приложений, связанных с музыкой или чем-то подобным, вам придётся иметь с ним дело.

У класса достаточно большое количество констант и методов, но сам класс прост в использовании.

Пользователи могут слышать звук через встроенный динамик, разъём для проводной гарнитуры, Bluetooth (A2DP аудио). Вы можете через AudioManager определить, куда в настоящее время направляется аудиопоток и выполнить какое-нибудь действие, например, приглушить звук:

Система оповещает через широковещательное намерение ACTION_AUDIO_BECOMING_NOISY о смене источника звука. Зарегистрируйте BroadcastReceiver и прослушивайте нужное намерение.

В некоторых других примерах на сайте также используется AudioManager.

Управление громкостью и воспроизведением

Вы можете управлять громкостью в своём приложении, используя аппаратные или программные средства контроля звука устройства, блютуз-гарнитуры или наушников.

Также вы можете управлять воспроизведением аудиопотока — пауза, стоп и т.д.

Android поддерживает отдельные звуковые потоки для воспроизведения музыки, сигнала будильника, оповещения, входящего звонка, системных звуков, входящего звонка и DTMF тонов. Пользователь может управлять громкостью каждого потока отдельно.

По умолчанию, при нажатии клавиш регулировки громкости, изменяется уровень громкости активного аудиопотока. Если ваше приложение в данный момент не воспроизводит аудио, то клавиши регулировки громкости регулируют громкость мелодии входящего звонка. Если у вас игра или музыкальное приложение, то когда пользователь нажимает клавиши регулировки громкости, он хочет изменять громкость игры или музыки.

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

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

Кнопки контроля воспроизведения, такие как воспроизведение, «пауза», «стоп», «вперёд» и «назад» доступны на некоторых телефонах и многих проводных или беспроводных гарнитурах.

Voice uplink

Когда пользователь нажимает одну из этих аппаратных кнопок, система рассылает намерение с действием ACTION_MEDIA_BUTTON.

Чтобы обработать нажатие медиа-кнопки, вам необходимо зарегистрировать BroadcastReceiver в файле манифеста:

Реализация приёмника сама должна извлекать нажатую клавишу, переданную в оповещении. Объект Intent включает в себя ключ EXTRA_KEY_EVENT, класс KeyEvent включает в себя список статических констант KEYCODE_MEDIA_*, который содержит все возможные медиа-кнопки, такие как KEYCODE_MEDIA_PLAY_PAUSE и KEYCODE_MEDIA_NEXT.

Следующий фрагмент показывает, как получить нажатую медиа-кнопку и изменить воспроизведение медиа.

Так как несколько приложений могут обрабатывать нажатия медиа-кнопок, вы должны программно управлять тем, когда ваше приложение должно получать нажатия кнопок. Следующий код может использоваться в вашем приложении для регистрации и отмены регистрации вашего приемника событий от медиа-кнопок с помощью AudioManager.

Как правило, приложения должны отключать приёмники, когда они становятся неактивными или невидимыми. Однако, это не так просто для приложений, воспроизводящих мультимедиа – на самом деле отвечать на нажатия кнопок воспроизведения наиболее важно, когда приложение не видно и, следовательно, не может управляться с экрана пользовательского интерфейса. Лучший подход заключается в регистрации и отмене регистрации приемника событий медиа-кнопок, когда ваше приложение получает и теряет аудиофокус.

Управление аудиофокусом

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

Запрос аудиофокуса делается с помощью метода requestAu
dioFocus()
, который возвращает AUDIOFOCUS_REQUEST_GRANTED, если запрос был успешным.

Вы должны указать какой поток вы будете использовать и какой тип аудиофокуса вам требуется — временный (transient) или постоянный (permanent). Запрашивайте временный фокус, если вы предполагаете воспроизводить аудио в течение короткого времени. При воспроизведении музыки предпочтительнее запрашивать постоянный аудиофокус.

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

Когда приложение закончило воспроизведение, необходимо вызвать метод abandonAudioFocus(). Метод уведомит систему о том, что вам больше не требуется аудиофокус и отменит регистрацию связанную с AudioManager.OnAudioFocusChangeListener. В случае отмены временного аудиофокуса, вызов позволит любому прерванному приложению продолжить воспроизведение.

При запросе временного аудиофокуса у вас есть дополнительная опция: активировать приглушение (ducking). Обычно, когда приложение теряет аудиофокус, оно незамедлительно заглушает воспроизведение. Запрашивая временный аудиофокус, который позволяет приглушение, вы говорите другим приложениям, что они могут продолжить воспроизводить аудио с пониженной громкостью, пока фокус не будет им возвращён.

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

Ваше приложение может потерять фокус, когда его запросит другое приложение.

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

Вы должны продолжать следить за изменениями фокуса и быть готовым возобновить воспроизведение с того места где оно было приостановлено, как только вы восстановите фокус.

Если потеря аудиофокуса является постоянной, то предполагается, что в настоящее время другое приложение используется для прослушивания аудио и ваше приложение должно эффективно себя закончить.

В следующем листинге, мы приостановим воспроизведение, если потеря аудиофокуса временная и возобновим его, когда вновь получим аудиофокус. Если потеря является постоянной, то она отменяет регистрацию нашего приёмника событий кнопок и прекращает контролировать изменения аудиофокуса.

В случае временной потери аудиофокуса, где разрешается приглушение, вы можете «сделать потише».

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

Управление микрофоном

Проверить, выключен ли микрофон, можно с помощью метода isMicrophoneMute():

Включить или выключить микрофон можно с помощью метод setMicrophoneMute():

Использование динамиков

Метод isSpeakerphoneOn() позволяет определить, играет ли музыка через динамики.

Переключиться на динамики или отключить их можно через метод setSpeakerphoneOn():

Дополнительное чтение

Режим «Без звука» — управление режимами Обычный, Без звука, Вибрация.

Управление громкостью

Реклама

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *