Добавить фоновую музыку в приложение андроид
Новые игровые системы, такие как PlayStation 4, имеют приятную тонкую функцию, которая имеет большое значение для создания более захватывающего опыта. Каждый раз, когда вы находитесь в главном меню или на главном экране, воспроизводится фоновая музыкальная дорожка, которая добавляет звуковую привлекательность к восприятию, которое в противном случае было бы полностью связано с визуальными эффектами. li> Не пропустите: как удалить вредоносное ПО с вашего устройства Android
Было бы неплохо получить такой же опыт на Устройство Android? Представьте себе сценарий, в котором каждый раз, когда вы разблокируете свой телефон, вас приветствует фоновая музыка, которая сопровождает вашу пусковую установку, а затем, когда вы открываете приложение и покидаете главный экран, музыка исчезает. Что ж, с уникальным профилем Tasker, который я создал, это легко может стать реальностью.
Что вам понадобится
Сначала и, прежде всего, вам необходимо установить приложение для автоматизации Android Tasker. Полная версия Tasker обойдется вам в $ 2,99 в магазине Google Play, но если вы не готовы взять на себя такое обязательство, вы можете установить бесплатную 7-дневную пробную версию Tasker по по этой ссылке. .
После того, как вы установили Tasker, вам также необходимо убедиться, что его подключаемый модуль специальных возможностей включен. Если вы не уверены в этом, перейдите в главное меню настроек телефона и выберите «Специальные возможности». Отсюда выберите в списке опцию Tasker , затем убедитесь, что плагин включен, используя тумблер в верхней части экрана.
Шаг 1. Создайте новый профиль с вашей программой запуска в качестве контекста
Шаг 2. Свяжите задачу с этим профилем
Здесь введите« музыка »в поле Фильтр внизу всплывающего окна, затем выберите« Музыкальное сопровождение ». Затем убедитесь, что опция «Цикл» отмечена, затем коснитесь значка поиска в правом верхнем углу экрана. Отсюда используйте следующее меню, чтобы найти и выбрать музыкальный файл, который вы хотите воспроизвести, когда находитесь на главном экране, затем дважды нажмите кнопку возврата на устройстве.
Шаг 3. Добавьте задачу выхода
Теперь в главном меню Tasker нажмите и удерживайте часть вашего профиля Music Play , затем выберите «Добавить задачу выхода». Затем нажмите «Новая задача», оставьте поле имени пустым и нажмите значок галочки.
Затем добавьте действие к своей задаче выхода, нажав кнопку + в нижней части экрана. Отсюда снова введите «музыка» в поле Фильтр , но на этот раз выберите «Music Stop». В следующем меню оставьте все параметры отключенными, затем дважды нажмите кнопку возврата на устройстве.
Шаг 4. Добавьте второй контекст в свой профиль
Снова из главного меню Tasker, нажмите и удерживайте часть вашего профиля, содержащую имя вашей программы запуска. Отсюда выберите «Добавить», затем выберите «Состояние» в следующем меню.
На этом этапе нажмите кнопку возврата на устройстве один раз, чтобы просмотреть свою работу. Если все настроено правильно, у вас должен быть профиль, который будет действовать только тогда, когда ваш лаунчер активен и ваш дисплей включен. Когда это произойдет, ваш файл окружающей музыки будет воспроизводиться в бесконечном цикле, но когда любое из условий вашего профиля перестает выполняться, запускается ваша задача выхода, в результате чего музыка останавливается.
Какой файл фоновой музыки вы использовали для своего профиля Tasker? Сообщите нам об этом в разделе комментариев ниже или напишите нам в Facebook или Twitter для Android Hacks, Facebook, Google+ или Twitter.
Обеспечьте безопасность подключения без ежемесячного счета . Получите пожизненную подписку на VPN Unlimited для всех своих устройств при единовременной покупке в новом магазине Gadget Hacks Shop и смотрите Hulu или Netflix без региональных ограничений, повышайте безопасность при просмотре в общедоступных сетях и многое другое.
В настоящее время вы можете найти много фоновой музыки для iOS и Android на рынке. Вам может быть сложно выбрать идеальный вариант для добавления фоновой музыки в ваши видео. Чтобы сэкономить ваше время, здесь мы перечислим 10 лучших фоновых музыкальных приложений для вас, а также выделим их функции, поддерживаемые платформы и цену среди любой другой важной информации. Прочитайте и выберите лучший, чтобы добавить фоновую музыку на устройства iOS и Android.
Часть 1. Рекомендация: Лучшые программы для добавления фоновой музыки
Для пользователей Mac и Windows вы можете скачать Редактор видеофильмов Filmora для Mac (или Filmora Video Editor для Windows ), чтобы добавить фоновую музыку к вашим видео. И вы можете редактировать музыку и настраивать ее в соответствии с вашими потребностями. Кроме того, вы можете использовать несколько полезных инструментов для редактирования видео и применять разнообразные видеоэффекты в соответствии с вашими темами.
Почему стоит выбрать Filmora Video Editor:
- У вас может быть много бесплатной фоновой музыки для видео в другом стиле.
- Легко редактировать музыку в скорости, громкости, исчезновении и т. д.
- Вы можете просто обрезать, повернуть, разбить и соединить свои видео.
- Вы можете настроить свое видео с помощью наложения, фильтра, PIP и т. д.
- И у вас будет более 300 замечательных видеоэффектов, чтобы сделать ваше видео особенным.
Часть 2. Топ-10 фоновых музыкальных приложений для iOS и Android-устройств
Video Star это простое в использовании приложение для фоновой музыки, и вам не потребуется каких-либо знаний, чтобы добавить любимую фоновую музыку к видео на iPhone или iPad. Он имеет все необходимые инструменты и позволяет пользователю выбирать музыку из личной библиотеки. Все песни доступны бесплатно и предлагают покупки в приложении, чтобы обеспечить вам все необходимые эффекты.
Многие из приложений фоновой музыки на рынке требуют, чтобы у вас были расширенные навыки редактирования видео, прежде чем добавлять фоновую музыку к видео. К счастью, Magisto является исключением и будет быть идеальным выбором для новичков, которые новичок в этих вещах. Он может добавлять фоновую музыку на Android и iPhone до и после того, как вы отредактировали видео, а его ключевой функцией является неограниченное пространство для хранения, загрузка, а также создание длинных фильмов.
VivaVideo является инклюзивным приложением, потому что у него есть видеоканал, позволяющий снимать видео, а затем добавлять фоновую музыку к видео на Android или iPhone. Музыка даст вам достаточно денег, как только вы придумаете слайд-шоу, которые легко реализуют с помощью VivaVideo. Работает как для iOS, так и для Android, чтобы добавить фоновую музыку, что означает, что ее совместимость неоспорима.
iMovie - приложение для фоновой музыки производится Apple и будет хорошим выбором для добавления фоновой музыки к вашему видео на iOS, а также устройствам Android. Это очень мощное приложение и имеет очень мало ограничений, которые включают передачу музыкальных файлов на платформу Mac для расширенного редактирования. В основном работает с устройствами iOS.
Основное преимущество заключается в возможности Replay эту покупку в приложении, которые позволяют избавиться от эффектов, фильтров и водяных знаков при добавлении фоновой музыки на iPhone. Все зависит от ваших личных предпочтений, но оно входит в первую десятку приложений для iOS. Он очень хорошо синхронизируется с Instagram и другими социальными сайтами, что делает его чрезвычайно простым для совместного использования видео после добавления фоновой музыки.
YouTube Capture создано для людей, которым нравится делать что-то в движении. Это позволит вам отредактировать видео, а затем добавить подходящую саундтрек в качестве фоновой музыки. После этого вы сможете легко поделиться видео на YouTube. У вас будет больше преимуществ при использовании с iOS.
По звучанию имени, MixBit приложение фоновой музыки не только позволяет добавлять фоновую музыку к вашим видео на устройствах Android и iOS; также возможно смешивать несколько видеоклипов без искажения музыки. Вам понравится, если вы будете диджеем или хотите стать одним из них в будущем.
Clipper это очень быстрое и простое в использовании приложение, которое вы можете использовать для добавления фоновой музыки в свои видео на iOS. Вы можете сшить много видеороликов таким образом, чтобы музыка оставалась неизменной при игре.
Splice представляет временную шкалу для обеспечения точности при добавлении фоновой музыки к вашему видео на iOS. У вас будет простое редактирование видео, поэтому видео и музыка не будут перекрываться. Они будут играть так, как ожидалось, что является его самым сильным моментом.
VideoSound это приложение для фоновой музыки для iPhone и iPad, предназначенное для добавления фоновой музыки в видеоролики перед тем, как делиться на Instagram, Vine и Facebook. С помощью VideoSound вы можете не только добавлять музыку из iTunes в свои видео (по одному), но и прикреплять песню к одной фотографии и создавать фото с музыкой. Более того, создание слайд-шоу с фотографиями и музыкой также доступно.
Эту часть я очень сильно затянул так как не было времени разбираться как проигрывать музыку в фоне. Занимался другими проектами, и до сих пор занимаюсь, так что эту часть я напишу коротко и понятно. Сложного в этой части ничего нету так что все будет быстро и безболезненно (: Предыдущие 7 частей вы можете найти ниже:
Давно еще меня просили написать эту статью, еще в февряла этого года, простите те кто просили, что так вышло. И так начнем с самого простого, открываем нашу игру в которой хотим добавить музыку, добавляем в папку res/raw/ наш *.mp3 файл, именно mp3, так как на wav и wma выдает ошибку, и создаем файл MyService.java который будет сервисом для нашего проигрывания музыки. Код он будет содержать в себе следующий:
MyService.java
Что мы тут имеем? Ну сперва как видно мы унаследовали наш класс от класса Service для того что бы наш класс мог работать в фоне и ничего нам не мешало только для этого его и юзать. Дальше нам открывается методonCreate() который запускает медиаплеер с файлом который будет проигрываться. После этого идет класс уничтожения (выключения) музыки, когда нам понадобится, например выйти из игры или выключить музыку мы будем обращаться к этому методу для выключения музыки. Ну и onStart() метод который запускает наш сервис что бы музыка начала проигрываться.
Дальше нам нужно сказать еклипсу что этот класс юзается в фоне, и никак не сметь его запускать в виде активности или другой какой-то байды (: Для этого открываем AndroidManifest и вставляем перед закрывающимся :
Ну и конечно же нам нужно вызывать этот класс и наши методы для запуска музыки, если вы хотите что бы музыка начиналась запускаться сразу при входе в игру, то есть сразу из меню, то вам нужно в главной активитиStartActivity.java который запускает наше меню написать в onCreate() вот такое:
StartActivity.java
Ну а что бы выключить при выходе из игры или по желанию юзера тогда добавляем метод onBackPressed() и в нем пишем вот такое:
StartActivity.java
И тогда у нас сервис остановится, музыка замолчит, и если вы пропишите в этом методе finish() то приложения закроется.
Вот и все, никаких сложностей нет, все очень просто и прозрачно, надеюсь что конечный читатель статьи понял и принял все что тут написано, эта статья скорей всего последняя так как дальше я не вижу смысла развивать эту тему, для написания простой игры я написал достаточно и надеюсь что понятно (: Всем спасибо за внимания, очень приятно что я помог кому-то с написанием своей первой игры.
В статье рассматривается архитектура и API для создания приложений, воспроизводящих музыку. Мы напишем простое приложение, которое будет проигрывать небольшой заранее заданный плейлист, но «по-взрослому» — с использованием официально рекомендуемых практик. Мы применим MediaSession и MediaController для организации единой точки доступа к медиаплееру, и MediaBrowserService для поддержки Android Auto. А также оговорим ряд шагов, которые обязательны, если мы не хотим вызвать ненависти пользователя.
В первом приближении задача выглядит просто: в activity создаем MediaPlayer, при нажатии кнопки Play начинаем воспроизведение, а Stop — останавливаем. Все прекрасно работает ровно до тех пор, пока пользователь не выйдет из activity. Очевидным решением будет перенос MediaPlayer в сервис. Однако теперь у нас встают вопросы организации доступа к плееру из UI. Нам придется реализовать binded-сервис, придумать для него API, который позволил бы управлять плеером и получать от него события. Но это только половина дела: никто, кроме нас, не знает API сервиса, соответственно, наша activity будет единственным средством управления. Пользователю придется зайти в приложение и нажать Pause, если он хочет позвонить. В идеале нам нужен унифицированный способ сообщить Android, что наше приложение является плеером, им можно управлять и что в настоящий момент мы играем такой-то трек из такого-то альбома. Чтобы система со своей стороны подсобила нам с UI. В Lollipop (API 21) был представлен такой механизм в виде классов MediaSession и MediaController. Немногим позже в support library появились их близнецы MediaSessionCompat и MediaControllerCompat.
Следует сразу отметить, что MediaSession не имеет отношения к воспроизведению звука, он только об управлении плеером и его метаданными.
MediaSession
Итак, мы создаем экземпляр MediaSession в сервисе, заполняем его сведениями о нашем плеере, его состоянии и отдаем MediaSession.Callback, в котором определены методы onPlay, onPause, onStop, onSkipToNext и прочие. В эти методы мы помещаем код управления MediaPlayer (в примере воспользуемся ExoPlayer). Наша цель, чтобы события и от аппаратных кнопок, и из окна блокировки, и с часов под Android Wear вызывали эти методы.
Полностью рабочий код доступен на GitHub (ветка master). В статьи приводятся только переработанные выдержки из него.
Для доступа извне к MediaSession требуется токен. Для этого научим сервис его отдавать
и пропишем в манифест
MediaController
Теперь реализуем activity с кнопками управления. Создаем экземпляр MediaController и передаем в конструктор полученный из сервиса токен.
MediaController предоставляет как методы управления плеером play, pause, stop, так и коллбэки onPlaybackStateChanged(PlaybackState state) и onMetadataChanged(MediaMetadata metadata). К одному MediaSession могут подключиться несколько MediaController, таким образом можно легко обеспечить консистентность состояний кнопок во всех окнах.
Наша activity работает, но ведь идея исходно была, чтобы из окна блокировки тоже можно было управлять. И тут мы приходим к важному моменту: в API 21 полностью переделали окно блокировки, теперь там отображаются уведомления и кнопки управления плеером надо делать через уведомления. К этому мы вернемся позже, давайте пока рассмотрим старое окно блокировки.
Как только мы вызываем mediaSession.setActive(true), система магическим образом присоединяется без всяких токенов к MediaSession и показывает кнопки управления на фоне картинки из метаданных.
Однако в силу исторических причин события о нажатии кнопок приходят не напрямую в MediaSession, а в виде бродкастов. Соответственно, нам надо еще подписаться на эти бродкасты и перебросить их в MediaSession.
MediaButtonReceiver
Для этого разработчики Android любезно предлагают нам воспользоваться готовым ресивером MediaButtonReceiver.
Добавим его в манифест
MediaButtonReceiver при получении события ищет в приложении сервис, который также принимает "android.intent.action.MEDIA_BUTTON" и перенаправляет его туда. Поэтому добавим аналогичный интент-фильтр в сервис
Если подходящий сервис не найден или их несколько, будет выброшен IllegalStateException.
Теперь в сервис добавим
Метод handleIntent анализирует коды кнопок из intent и вызывает соответствующие коллбэки в mediaSession. Получилось немного плясок с бубном, но зато почти без написания кода.
На системах с API >= 21 система не использует бродкасты для отправки событий нажатия на кнопки и вместо этого напрямую обращается в MediaSession. Однако, если наш MediaSession неактивен (setActive(false)), его пробудят бродкастом. И для того, чтобы этот механизм работал, надо сообщить MediaSession, в какой ресивер отправлять бродкасты.
Добавим в onCreate сервиса
На системах с API < 21 метод setMediaButtonReceiver ничего не делает.
Ок, хорошо. Запускаем, переходим в окно блокировки и… ничего нет. Потому что мы забыли важный момент, без которого ничего не работает, — получение аудиофокуса.
Аудиофокус
Всегда существует вероятность, что несколько приложений захотят одновременно воспроизвести звук. Или поступил входящий звонок и надо срочно остановить музыку. Для решения этих проблем в системный сервис AudioManager включили возможность запроса аудиофокуса. Аудиофокус является правом воспроизводить звук и выдается только одному приложению в каждый момент времени. Если приложению отказали в предоставлении аудиофокуса или забрали его позже, воспроизведение звука необходимо остановить. Как правило фокус всегда предоставляется, то есть когда у приложения нажимают play, все остальные приложения замолкают. Исключение бывает только при активном телефонном разговоре. Технически нас никто не заставляет получать фокус, но мы же не хотим раздражать пользователя? Ну и плюс окно блокировки игнорирует приложения без аудиофокуса.
Фокус необходимо запрашивать в onPlay() и освобождать в onStop().
Получаем AudioManager в onCreate
Запрашиваем фокус в onPlay
И освобождаем в onStop
При запросе фокуса мы отдали коллбэк
Все, теперь окно блокировки на системах с API < 21 работает.
Android 4.4
MIUI 8 (базируется на Android 6, то есть теоретически окно блокировки не должно отображать наш трек, но здесь уже сказывается кастомизация MIUI).
Уведомления
Однако, как ранее упоминалось, начиная с API 21 окно блокировки научилось отображать уведомления. И по этому радостному поводу, вышеописанный механизм был выпилен. Так что теперь давайте еще формировать уведомления. Это не только требование современных систем, но и просто удобно, поскольку пользователю не придется выключать и включать экран, чтобы просто нажать паузу. Заодно применим это уведомление для перевода сервиса в foreground-режим.
Нам не придется рисовать кастомное уведомление, поскольку Android предоставляет специальный стиль для плееров — Notification.MediaStyle.
Добавим в сервис два метода
И добавим вызов refreshNotificationAndForegroundStatus(int playbackState) во все коллбэки MediaSession.
Android 4.4
Android 7.1.1
Android Wear
Started service
В принципе у нас уже все работает, но есть засада: наша activity запускает сервис через binding. Соответственно, после того, как activity отцепится от сервиса, он будет уничтожен и музыка остановится. Поэтому нам надо в onPlay добавить
Никакой обработки в onStartCommand не надо, наша цель не дать системе убить сервис после onUnbind.
А в onStop добавить
В случае, если к сервису привязаны клиенты, stopSelf ничего не делает, только взводит флаг, что после onUnbind сервис можно уничтожить. Так что это вполне безопасно.
ACTION_AUDIO_BECOMING_NOISY
Продолжаем полировать сервис. Допустим пользователь слушает музыку в наушниках и выдергивает их. Если эту ситуацию специально не обработать, звук переключится на динамик телефона и его услышат все окружающие. Было бы хорошо в этом случае встать на паузу.
Для этого в Android есть специальный бродкаст AudioManager.ACTION_AUDIO_BECOMING_NOISY.
Добавим в onPlay
В onPause и onStop
И по факту события встаем на паузу
Android Auto
Если у вас под рукой нет совместимого автомобиля, что, согласитесь, иногда бывает, можно просто запустить приложение и экран самого телефона будет работать в качестве автомобильного.
Исходный код выложен на GitHub (ветка MediaBrowserService).
Прежде всего надо указать в манифесте, что наше приложение совместимо с Android Auto.
Добавим в манифест
Здесь automotive_app_desc — это ссылка на файл automotive_app_desc.xml, который надо создать в папке xml
Преобразуем наш сервис в MediaBrowserService. Его задача, помимо всего ранее сделанного, отдавать токен в Android Auto и предоставлять плейлисты.
Поправим декларацию сервиса в манифесте
Во-первых, теперь наш сервис экспортируется, поскольку к нему будут подсоединяться снаружи.
И, во-вторых, добавлен интент-фильтр android.media.browse.MediaBrowserService.
Меняем родительский класс на MediaBrowserServiceCompat.
Поскольку теперь сервис должен отдавать разные IBinder в зависимости от интента, поправим onBind
Имплементируем два абстрактных метода, возвращающие плейлисты
И, наконец, имплементируем новый коллбэк MediaSession
Здесь mediaId — это тот, который мы отдали в setMediaId в onLoadChildren.
Плейлист
Трек
UPDATE от 27.10.2017: Пример на GitHub переведен на targetSdkVersion=26. Из релевантных теме статьи изменений необходимо отметить следующее:
- android.support.v7.app.NotificationCompat.MediaStyle теперь deprecated. Вместо него следует использовать android.support.v4.media.app.NotificationCompat.MediaStyle. Соответственно, больше нет необходимости использовать android.support.v7.app.NotificationCompat, теперь можно использовать android.support.v4.app.NotificationCompat
- Метод AudioManager.requestAudioFocus(OnAudioFocusChangeListener l, int streamType, int durationHint) теперь тоже deprecated. Вместо него надо использовать AudioManager.requestAudioFocus(AudioFocusRequest focusRequest). AudioFocusRequest — новый класс, добавленный с API 26, поэтому не забывайте проверять на API level.
Создание AudioFocusRequest выглядит следующим образом
Теперь запрашиваем фокус
Разумеется, все вышеописанные изменения вносить необязательно, старые методы работать не перестали.
Еще очень рекомендую к просмотру доклад Ian Lake. Доклад от 2015 года, но вполне актуален.
Читайте также: