ЗАПИС АУДІО І ВІДЕО в Android додатку

&nbsp

Стандартний клас, що підтримує запис, називається Medi aRecorder Він багато в чому нагадує Medi aPl ауег і протягом життєвого циклу проходить через різні стани Ці стани перераховані нижче (Докладніше про них розповідає діаграма станів, наведена на сайті розробників Android за адресою http://developerandroidcom/reference/android/media/MediaRecorderhtml):

ініціалізація (initialize) – інстанцірованія класу Medi aRecorder

инициализирован (initialized) – Medi aRecorder готовий до використання

джерело даних сконфігурований (DataSource configured) – джерело медіа (де розміщуватиметься висновок) зконфігурований Про підготовлений (prepared) – Medi aRecorder підготовлений до запису Про запис (recording) – Йде запис

звільнено (released) – всі ресурси вивільнені

Для використання Medi aRecorder в файлі опису необхідно поставити кілька прав доступу:

щоб дозволити відеозапис, активуйте RECORDVIDEO і CAMERA:

&ltuses-permission android:name=&quotandroidpermissionRECORD_VIDEO&quot/&gt &ltuses-permission android:name=&quotandroidpermissionCAMERA&quot/&gt

для запису аудіо активуйте RECORD_AUDIO:

&ltuses-permission android:name=&quotandroidpermissionRECORD AUDIO&quot/&gt

Запис аудіо

Існує три методи для запису аудіо Стандартний метод називається Medi aRecorder Найбільш простий метод повязаний з використанням наміри – Intent Метод AudioRecorder можна використовувати для запису безпосередньо з апаратних буферів

Запис аудіо за допомогою MediaRecorder

Спочатку инициализируем MediaRecorder Потім задаємо інформацію про джерело даних (джерело введення аудіо, формат виведення, тип кодування, де саме буде записуватися файл і т д) Починаючи з версії 8 можна також задавати швидкість цифрового потоку (бітрейт) і частоту дискретизації (sampling rate) Коли все це буде зроблено, викликаємо метод ргерагеС):

Потім, коли буде потрібно розпочати запис, викликаємо метод start ():

Коли запис необхідно зупинити, викликаємо метод stopC) Якщо після цього ви збираєтеся продовжити запис, викличте reset (), щоб примусово перевести Medi aRecorder в початковий стан бездіяльності Потім переконфігуріруется джерело даних, щоб знову підготувати MediaRecorder:

Коли MediaRecorder вже не потрібен, переконайтеся, що ви його вивільнили:

У наступному прикладі показано невелике зручний додаток, що використовує розроблений нами код, щоб надати користувачеві кнопку Record (Запис)

При натисканні цієї кнопки метод record виконується стосовно до файлу, шлях до якого вже проставлений Після цього стає видно кнопка Stop (Стоп), а кнопка Record (Запис) стає невидимою Після натискання кнопки Stop (Стоп) викликається метод stop Record і кнопка Record (Запис) знову стає видимою:

Запис аудіо з застосуванням намірів

Найпростіше записувати аудіо за допомогою Intent Просто створіть намір (intent) MediaStoreAudio Medi а RECORD_SOUND_ACTION і запустіть його методом startActivity ForResultO, запуск відбувається з активності Activity Так запускається стандартний інструмент запису аудіо, який є на більшості пристроїв з Android Далі записується певне аудіо:

Після того як запис завершиться і інструмент аудіозаписи закінчить роботу, ваша активність Activity, яка зробила виклик до startActi vityForResult О, буде знову перенесена на передній план Коли це відбудеться, метод onActi vityResult (), що відноситься до вашої активності Activity, буде запущений із зазначеним вами кодом запиту (requestCode), в даному випадку – 1, кодом результату (ОК або помилка) і з наміром, несучим унікальний ідентифікатор ресурсу, який вказує на записаний аудіофайл:

Запис аудіо з застосуванням AudioRecorder

Паралельно з Audi oTrack, Audi oRecorder надає набагато більш прямий спосіб запису:

Метод AudioRecord вказує тип джерела, з якого буде вестися запис (мікрофон, камкордер, голосовий виклик), частоту дискретизації в герцах (44100, 22050 або 11025), конфігурацію аудіо (моно або стерео), формат / кодування аудіо і довжину буфера в байтах Зверніть увагу на те, що саме розмір цього буфера визначає, як довго AudioRecord зможе вести запис до того, як почне «нашаровувати» дані, які поки що не лічені Дані повинні зчитуватися з аудіообладнання дрібнішими фрагментами, ніж загальний розмір буфера запису Метод AudioRecord в Android досить конфігурувати один раз, після чого він автоматично буде розпізнавати, як взаємодіяти з обладнанням конкретного пристрою Тому робота з програмою буде протікати без всяких проблем

Щоб почати запис, переведіть AudioRecord в стан Record (Запис) і починайте циклічно зчитувати дані з апаратного буфера:

Щоб зупинити запис, переведіть Audi oRecord в стан Stop (Стоп) Якщо ви більше не збираєтеся нічого записувати, то не забудьте вивільнити всі ресурси, які були залучені в процес запису В іншому випадку можна викликати метод startRecording (), щоб знову почати запис:

Запис відео

Відео можна записувати двома способами: за допомогою Medi aRecorder або за допомогою Intent Запис необробленої інформації не підтримується, як і у випадку з аудіо

Запис відео із застосуванням MediaRecorder

Процес запису відео із застосуванням MediaRecorder багато в чому нагадує аналогічний процес з аудіо Ініціалізується MediaRecorder, підготовляється джерело даних, потім Medi aRecorder запускається Можна запропонувати користувачеві вікно попереднього перегляду, щоб він міг відстежувати снимаемое відео Для цього, як і для відтворення аудіо, надається поверхню – про неї ми говорили вище Зазвичай застосовується вид VideoView:

Запис відео із застосуванням намірів

Запис відео з використанням намірів нагадує аналогічний процес з аудіо У такому випадку застосовується намір MediaStoreACTION_VIDEO_CAPTURE, результуючі дані – це URI відеофайлу

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*