Вы любите музыку и увлекаетесь технологиями? Вы мечтали создать свое приложение для потокового воспроизведения музыки, как YouTube Music? Не останавливайтесь на достигнутом! В этой статье мы расскажем вам о создании музыкального приложения, которое будет выделяться на переполненном рынке.
От разработки концепции до запуска, мы рассмотрим все необходимые функции, инструменты и советы для достижения успеха. Приготовьтесь воплотить свои мечты о музыкальном приложении в реальность!
Что такое YouTube Music и как он работает?
YouTube Music — это сервис потокового воспроизведения музыки, разработанный компанией YouTube. Он позволяет пользователям получить доступ к обширной библиотеке песен, альбомов, плейлистов, музыкальных видео и живых выступлений. Сервис доступен на различных платформах, включая веб, мобильные устройства и смарт-телевизоры.
Пользователи могут искать музыку по ключевым словам, просматривать рекомендованные плейлисты и создавать плейлисты. Приложение также включает персонализированный домашний экран, который предлагает музыку на основе истории прослушивания и предпочтений пользователя. Кроме того, YouTube Music предлагает подписку на премиум-услугу YouTube Music Premium, которая позволяет пользователям слушать музыку без рекламы, загружать музыку для прослушивания в автономном режиме и получать доступ к дополнительным функциям, таким как фоновое воспроизведение.
КАК НАПИСАТЬ СВОЮ ПЕРВУЮ ПЕСНЮ? ПРОСТАЯ РАБОЧАЯ СХЕМА
YouTube Music интегрирован с более широкой музыкальной экосистемой Google, включая Google Play Music, что позволяет пользователям получать доступ к музыке на разных устройствах и платформах. В целом, YouTube Music — это потоковый сервис, предоставляющий пользователям доступ к огромной библиотеке музыки и музыкального видео с персонализированными рекомендациями и различными вариантами прослушивания, включая бесплатные и премиум-версии с поддержкой рекламы.
Ключевые функции YouTube Music для включения в ваше музыкальное приложение
- Персонализированные рекомендации: YouTube Music использует алгоритмы машинного обучения, чтобы рекомендовать музыку пользователям на основе их истории прослушивания и предпочтений. Эта функция может быть реализована в вашем музыкальном приложении, чтобы предоставить пользователям персонализированный и увлекательный опыт прослушивания.
- Поиск и обнаружение: YouTube Music позволяет пользователям искать музыку по ключевым словам, просматривать рекомендованные плейлисты и открывать для себя новую музыку. Надежная функция поиска и обнаружения крайне важна для любого музыкального приложения, поскольку она позволяет пользователям быстро находить музыку, которую они хотят послушать.
- Музыкальные видео: YouTube Music содержит обширную библиотеку музыкальных видео, песен и альбомов. Включение музыкальных видеоклипов в ваше приложение поможет выделить его на фоне других сервисов потоковой передачи музыки и обеспечит дополнительный уровень вовлеченности пользователей.
- Оффлайн-прослушивание: YouTube Music Premium позволяет пользователям загружать музыку для прослушивания в автономном режиме. Эта функция особенно важна для пользователей, которые часто слушают музыку в местах с плохим интернет-соединением.
- Плейлисты: YouTube Music позволяет пользователям создавать плейлисты и обмениваться ими. Плейлисты — популярная функция среди пользователей потокового воспроизведения музыки, позволяющая сохранять и упорядочивать любимые песни и открывать для себя новую музыку.
- Фоновое воспроизведение: YouTube Music Premium позволяет пользователям воспроизводить музыку в фоновом режиме во время работы с другими приложениями или при заблокированном экране. Эта функция полезна для пользователей, которые хотят продолжать слушать музыку во время многозадачности.
- Интеграции: YouTube Music интегрирован в более широкую музыкальную экосистему Google, что позволяет пользователям получать доступ к своей музыке на разных устройствах и платформах. Интеграция вашего музыкального приложения с другими платформами, такими как социальные сети, может помочь увеличить его охват и вовлеченность пользователей.
- Пользовательский контент: YouTube Music позволяет пользователям загружать и делиться своей музыкой и музыкальными видеоклипами. Эта функция может быть реализована в вашем музыкальном приложении для создания чувства общности и поощрения вовлечения пользователей.
Как создать приложение для потокового воспроизведения музыки, подобное YouTube Music?
Создание приложения для потокового воспроизведения музыки, подобного YouTube Music, включает несколько этапов, начиная с четкого представления и понимания того, какие функции и возможности вы хотите включить и как вы хотите отличить свое приложение от других на рынке. Исследование и анализ вашей целевой аудитории, конкурентов и текущих тенденций на рынке очень важны.
В КАКИХ ПРОГРАММАХ ПИШУТ МУЗЫКУ — МОЙ ТОП 5 СЕКВЕНСОРОВ
Попробуйте no-code платформу AppMaster
AppMaster поможет создать любое веб, мобильное или серверное приложение в 10 раз быстрее и 3 раза дешевле
Следующий шаг — проектирование и разработка приложения, включая создание электронных схем и макетов, разработку пользовательского интерфейса и пользовательского опыта, а также кодирование приложения. Для ускорения процесса разработки можно использовать кроссплатформенные инструменты разработки, такие как React Native или Flutter. Для потоковой передачи музыки вам понадобится API потоковой передачи музыки, например, Spotify , Soundcloud, Deezer и другие.
Вам также нужно будет создать базу данных для хранения информации о пользователях и метаданных музыки и выбрать хостинговую платформу для вашего приложения. Некоторые из функций и возможностей, которые вы можете рассмотреть, включают персонализированные рекомендации, поиск и обнаружение, музыкальные видео, автономное прослушивание, плейлисты, фоновое воспроизведение и интеграции.
Перед запуском тщательно протестируйте приложение, чтобы убедиться в его стабильности и отсутствии ошибок. Когда приложение будет готово, разместите его в магазинах приложений, таких как Google Play Store и Apple App Store. После запуска важно эффективно продвигать и рекламировать ваше приложение, чтобы привлечь целевую аудиторию с помощью различных методов, таких как реклама, маркетинг в социальных сетях, маркетинг влиятельных лиц, PR и т.д. Помните, что создание приложения для потокового воспроизведения музыки, такого как YouTube Music, — это сложный процесс, требующий много времени, усилий и ресурсов, поэтому важно работать с командой опытных разработчиков, дизайнеров и маркетологов, чтобы обеспечить успех вашего приложения.
Сколько стоит создание приложения, подобного YouTube Music?
Стоимость создания приложения, подобного YouTube Music, может сильно варьироваться в зависимости от нескольких факторов, таких как сложность приложения, количество функций и возможностей, регион, в котором разрабатывается приложение, и уровень опыта команды разработчиков. В целом, разработка приложения для потокового воспроизведения музыки, такого как YouTube Music, может стоить от десятков тысяч до сотен тысяч или даже больше.
Вот несколько ключевых факторов, которые могут повлиять на стоимость разработки:
- Платформа: Стоимость разработки приложения для iOS будет отличаться от стоимости разработки приложения для Android.
- Дизайн: Создание простого дизайна пользовательского интерфейса будет стоить дешевле, чем создание более сложного.
- Разработка: Разработка на заказ будет стоить дороже, чем использование готовых шаблонов, а стоимость разработки будет отличаться в зависимости от местонахождения команды разработчиков.
- Функции: Стоимость добавления таких функций, как персонализированные рекомендации, поиск и обнаружение, музыкальные видео, автономное прослушивание, плейлисты, фоновое воспроизведение и интеграция, будет добавлена к базовой стоимости разработки.
- Обслуживание: Стоимость поддержки и обновления приложения после его запуска будет добавлена к первоначальной стоимости разработки.
Важно отметить, что эти оценки основаны на средних затратах, и они могут варьироваться в зависимости от выбранной вами компании или разработчика и конкретных требований вашего проекта.
Сколько времени это займет?
Время, необходимое для создания приложения, подобного YouTube Music, может сильно варьироваться в зависимости от нескольких факторов, таких как сложность приложения, количество функций и возможностей, уровень опыта команды разработчиков и доступные ресурсы. В среднем разработка приложения для потокового воспроизведения музыки, такого как YouTube Music, может занять от нескольких месяцев до года и более.
Время выхода на рынок имеет большое значение по нескольким причинам:
- Конкурентное преимущество: Чем быстрее вы запустите свое приложение, тем быстрее начнете привлекать пользователей и получать доход. Это может дать вам конкурентное преимущество перед другими компаниями, которые еще находятся в стадии разработки.
- Обратная связь и итерации: Быстрый запуск приложения позволяет получить обратную связь от пользователей и внести улучшения на основе этой обратной связи. Это поможет вам итерационно улучшать приложение с течением времени, что приведет к повышению вовлеченности и удержанию пользователей.
- Динамика рынка: Технологии и предпочтения пользователей быстро меняются, поэтому важно запустить приложение как можно скорее, чтобы воспользоваться текущими тенденциями рынка. Слишком долгое ожидание запуска приложения может сделать его менее актуальным и снизить вероятность успеха.
- Возврат инвестиций ( ROI ): Чем быстрее вы запустите свое приложение, тем быстрее вы сможете получить доход и окупить инвестиции. Более длительные сроки разработки могут привести к увеличению затрат и более длительному времени для достижения рентабельности.
- Снижение рисков: Запуск приложения как можно скорее поможет вам снизить риск того, что ваше приложение устареет или потеряет актуальность. Это также поможет быстро выявить любые проблемы и устранить их до того, как они станут более серьезными.
Попробуйте no-code платформу AppMaster
AppMaster поможет создать любое веб, мобильное или серверное приложение в 10 раз быстрее и 3 раза дешевле
Время выхода на рынок очень важно, так как оно может дать вам конкурентное преимущество, помочь в итерациях и улучшении вашего приложения, воспользоваться текущими тенденциями рынка, быстрее вернуть инвестиции и снизить риски.
Чем может помочь решение no-code
Решенияno-code могут ускорить и упростить создание приложения для потокового воспроизведения музыки, такого как YouTube Music. Эти решения позволяют нетехническим пользователям быстро создавать и запускать приложения, не требуя обширных знаний в области кодирования или разработки. Это может значительно сократить время и затраты, необходимые для создания такого приложения, как YouTube Music.
Решения no-code позволяют настраивать готовые шаблоны и функции в соответствии с конкретными потребностями вашего приложения без глубокого кодирования. Многие решения no-code также включают встроенные инструменты тестирования и развертывания, которые помогают ускорить процесс разработки и облегчают запуск приложения. Кроме того, эти решения легко масштабируются по мере роста и развития вашего приложения, позволяя вам адаптироваться к меняющимся потребностям пользователей и тенденциям рынка.
Заключение
В заключение следует отметить, что создание приложения для потокового воспроизведения музыки, подобного YouTube Music, требует четкого понимания того, какие функции и возможности вы хотите включить и как отличить ваше приложение от других на рынке. Исследование и анализ вашей целевой аудитории, конкурентов и отраслевых тенденций необходимы для обеспечения успеха вашего приложения. Включив такие ключевые функции, как персонализированные рекомендации, надежный поиск и обнаружение, музыкальные видео, автономное прослушивание, плейлисты, фоновое воспроизведение, интеграции и пользовательский контент, ваше приложение сможет выделиться на переполненном рынке потокового воспроизведения музыки и обеспечить персонализированный и увлекательный опыт прослушивания для пользователей. При правильном подходе и преданности делу вы сможете воплотить свои мечты о музыкальном приложении в реальность и сделать себе имя в отрасли.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Что необходимо для создания приложения, подобного YouTube Music?
Для создания приложения, подобного YouTube Music, вам потребуется команда разработчиков с опытом создания мобильных и веб-приложений, детальный план и дизайн приложения, а также надежная серверная инфраструктура для обработки больших объемов данных и трафика.
Сколько стоит создание приложения, подобного YouTube Music?
Стоимость создания приложения, подобного YouTube Music, может сильно варьироваться в зависимости от таких факторов, как размер команды разработчиков, сложность приложения и продолжительность проекта. Она может составлять от десятков тысяч до сотен тысяч долларов.
Сколько времени требуется для создания приложения, подобного YouTube Music?
Время разработки приложения, подобного YouTube Music, может варьироваться в зависимости от сложности приложения и размера команды разработчиков. В среднем разработка и запуск такого приложения, как YouTube Music, может занять от нескольких месяцев до года.
Каковы ключевые особенности такого приложения, как YouTube Music?
Ключевые особенности такого приложения, как YouTube Music, включают в себя:
- Потоковое воспроизведение музыки и музыкальных клипов
- Поиск и обнаружение новой музыки и исполнителей
- Персонализированные плейлисты и рекомендации
- Интеграция с платформами социальных сетей
- Воспроизведение в автономном режиме
- Профили пользователей и управление учетными записями
Каковы технические требования для создания приложения, подобного YouTube Music?
Технические требования для создания такого приложения, как YouTube Music, включают в себя:
- Надежная серверная инфраструктура для обработки больших объемов данных и трафика
- Интеграция с сервисами потоковой передачи музыки и API, такими как Spotify, SoundCloud и т.д.
- База данных для хранения информации о пользователях и данных приложения
- Опыт работы с технологиями мобильной и веб-разработки
- Опыт работы с облачными вычислительными платформами, такими как AWS , Azure и т.д.
Как я могу монетизировать приложение, подобное YouTube Music?
Существует несколько способов монетизации приложения, такого как YouTube Music, например:
- Покупки в приложении
- модель на основе подписки
- Реклама
- Спонсорские сделки
- Партнерский маркетинг
- Спонсируемый контент
Источник: appmaster.io
Создание музыкального приложения с помощью шаблона приложения для Android

Разработка красивого пользовательского интерфейса для приложений Android может занять много времени. Вот некоторые шаги, которые мы обычно выполняем при разработке приложения:
- Мы начинаем мозговой штурм, а затем рисуем (с бумагой и ручкой), как должен выглядеть пользовательский интерфейс. Другими словами, мы делаем каркас приложения.
- Мы создаем фактический дизайн пользовательского интерфейса из каркаса в программном обеспечении для проектирования, таком как Photoshop или Sketch.
- Мы переводим дизайн пользовательского интерфейса в реальный код в Android Studio. Здесь мы кодируем бизнес-логику. Рекомендуется также придерживаться принципов дизайна материалов.
И это только вершина айсберга — разработка приложения — это большая работа! Все эти задачи могут занимать много времени, особенно если вы выполняете их только вы.
Тем не менее, на этом и без того высококонкурентном рынке приложений вы должны двигаться быстро и убедиться, что ваше приложение имеет красивый пользовательский интерфейс (в дополнение к тому, что ваш код не содержит ошибок), иначе пользователи пойдут и установят приложения ваших конкурентов.
К счастью, CodeCanyon предлагает широкий спектр красивых шаблонов приложений, чтобы запустить ваш проект мобильного приложения. В этом руководстве я помогу вам начать работу с одним из таких шаблонов, который называется Android Material UI Template 3.0 . Мы собираемся создать музыкальное приложение для дизайна материалов, используя этот шаблон, а также рассмотрим некоторые его полезные функции.
Если музыка будет пищей любви, играйте дальше. — Уильям Шекспир
Предпосылки
Чтобы следовать этому руководству, вам понадобится Android Studio 3.0 или выше.
1. Получить шаблон
Чтобы начать создавать музыкальное приложение, вам понадобится аккаунт в Envato Market. Так что зарегистрируйтесь, если вы этого еще не сделали, и купите Android 3.0 UI Template 3.0 в CodeCanyon. Вы увидите, сколько работы это спасет вас!

После того, как вы успешно приобрели шаблон, его исходный код доступен в виде ZIP-файла, поэтому обязательно загрузите этот ZIP-файл на свой компьютер.
2. Распакуйте файл
Теперь перейдите в папку, в которую был загружен ZIP-файл, и разархивируйте или распакуйте его.

Когда вы войдете в корневую папку и нажмете на папку Project , вы увидите список папок с шаблонами. Вот что у меня есть на компьютере с Windows 10 после распаковки. Обратите внимание, что при покупке этого шаблона у вас есть доступ не только к шаблону музыкального приложения, но и к восьми другим шаблонам (как вы можете видеть на изображении выше).
3. Импортируйте шаблон
Запустите Android Studio 3 и выберите « Файл» > « Создать» > « Импортировать проект» …
Обязательно перейдите в папку, в которой находится извлеченный шаблон, и выберите шаблон музыкального приложения для импорта.
После успешного импорта появится диалоговое окно обновления плагина Android Gradle. Рекомендуется нажать кнопку « Обновить» , чтобы позволить Android Studio обновить наш плагин Gradle до последней версии ( 3.0.0 ) для нас.

Когда Gradle закончит синхронизацию вашего проекта автоматически, вы столкнетесь с этой ошибкой в Android Studio, потому что мы успешно обновили нашу зависимость Gradle до 3.0.0 .

Чтобы решить эту проблему, посетите файл build.gradle модуля приложения проекта и используйте outputFileName вместо output.outputFile в настройках конфигурации типа сборки выпуска. Убедитесь, что ваш похож на тот, что на скриншоте ниже.

Внутри того же файла build.gradle также сделайте следующее:
- Обновите ваш buildToolsVersion до ‘26.0.2’ .
- Установите для targetVersion и compileSdkVersion значение 26 .
- Убедитесь, что артефакты Android тоже обновлены.
dependencies <
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
testCompile ‘junit:junit:4.12’
compile ‘com.android.support:appcompat-v7:26.1.0’
compile ‘com.android.support:cardview-v7:26.1.0’
compile ‘com.android.support:recyclerview-v7:26.1.0’
compile ‘com.android.support:design:26.1.0’
compile ‘com.squareup.picasso:picasso:2.5.2’
compile ‘com.android.support:support-v4:26.1.0’
compile ‘com.balysv:material-ripple:1.0.2’
Эти артефакты Android доступны в репозитории Google Maven. Посетите файл build.gradle вашего проекта, чтобы включить его.
allprojects <
repositories <
Добавляя артефакты, мы научили Gradle, как найти библиотеку. Убедитесь, что вы не забыли синхронизировать свой проект после добавления их.
Обратите внимание, что этот шаблон использует артефакт Пикассо для загрузки и отображения изображений. Вы можете легко заменить его на Glide, если хотите.
Теперь, если вы запустите проект, вы увидите сообщение об ошибке в Android Studio Logcat.

Чтобы устранить эту ошибку, перейдите в /data/Tools.java и удалите метод getAPIVersion() . Убедитесь, что вы изменили следующие методы (на скриншоте ниже) в своем коде так, чтобы они были такими же, как у нас здесь.

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

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

Вы можете сказать, что этот музыкальный интерфейс приложения хорошо разработан. По умолчанию выбрана первая вкладка — она показывает список доступных песен. Нажмите на любую из песен и наслаждайтесь музыкой, которая воспроизводится (хотя в приложении доступна только одна песня).
Обратите внимание, что этот шаблон не перечисляет песни, доступные на хост-устройстве. Вместо этого он имеет свои собственные фиктивные данные (для демонстрационных целей). Так что вам нужно кодировать функциональность для перечисления песен на хост-устройстве. Генератор фиктивных классов данных находится по адресу /data/Constant.java .

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

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

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

При переходе к последней вкладке отображаются списки воспроизведения. Здесь вы даже можете добавить новый плейлист, нажав на кнопку «+» на панели инструментов.

Помните, что если вы хотите заработать на этом приложении деньги, размещая рекламу, вы можете легко интегрировать его с AdMob. Чтобы узнать, как интегрировать AdMob с приложением для Android, ознакомьтесь с моим руководством по Envato Tuts + .
Android SDK
Как монетизировать ваши приложения для Android с помощью AdMob
Вывод
Шаблоны приложений — это отличный способ запустить ваш следующий проект или научиться чему-то другому. В этой статье показано, как мы быстро создали красивое музыкальное приложение с использованием Android Material UI Template 3.0 на CodeCanyon. Помните, что если вы ищете вдохновение или создаете приложение и вам нужна помощь с определенной функцией, то вы можете найти свой ответ в некоторых из этих шаблонов.
В Envato Market есть сотни других шаблонов приложений для Android, из которых вы можете выбирать. Существуют шаблоны для игр и готовых приложений , а также подробные начальные шаблоны, подобные тому, который мы использовали в этом посте. Так что взгляните, и вы можете сэкономить много работы над своим следующим приложением для Android.
Если вы хотите изучить больше приложений и шаблонов для iOS, ознакомьтесь с некоторыми другими нашими статьями о шаблонах приложений CodeCanyon!
Источник: coderlessons.com
Создаём музыкальную игру с библиотекой Oboe от Google — часть 1
Совсем недавно Google представила библиотеку Oboe для создания аудиоприложений с минимальными задержками. Мы перевели их руководство по созданию простой игры.
Чему вы научитесь:
- Как проигрывать звуки с помощью библиотеки Oboe;
- Как создавать аудиопотоки с низкой задержкой;
- Как смешивать звуки;
- Как проигрывать звуки точно в нужное время;
- Как синхронизировать аудио с экранным интерфейсом.
Что вам понадобится:
- Android Studio 3.0.0 или выше;
- NDK и Build Tools;
- Устройство с Android Jelly Bean (16 уровень API) или выше для тестирования. Устройства Pixel подойдут лучше всего;
- Не помешает знание C++, но оно не является обязательным.
В чём суть игры?
Игра проигрывает клёвый четырёхбитный трек в цикле. Когда игра начинается, она также воспроизводит звук хлопка на первых трёх долях такта.
Пользователь должен повторить три хлопка с теми же промежутками во времени, нажимая на экран после начала второго такта.
При каждом нажатии пользователя игра воспроизводит звук хлопка. Если нажатие происходит в нужное время, экран загорается зелёным цветом. Если нажатие произошло слишком рано или слишком поздно, экран загорается оранжевым или фиолетовым соответственно.
Приготовления
Склонируйте проект
Склонируйте репозиторий Oboe на GitHub и переключитесь на ветку io18codelab :
$ git clone https://github.com/google/oboe $ cd oboe $ git checkout io18codelab
Откройте проект в Android Studio
Запустите Android Studio и откройте проект:
- File → Open
- Выберите папку «oboe/samples».
Обратите внимание, что этот проект содержит все примеры кода для библиотеки Oboe. Нам понадобится только RhythmGame.
Запустите проект
Выберите конфигурацию запуска RhythmGame:

Затем нажмите Ctrl+R для сборки и запуска шаблона приложения — оно должно скомпилироваться и запуститься, но всё, что оно делает, — показывает серый экран. Далее мы будем добавлять функциональность.

Откройте модуль RhythmGame
Файлы, с которыми мы будем работать, хранятся в модуле RhythmGame. Убедившись, что в окне Project выбран режим Android, разверните его.
Теперь разверните папку cpp/native-lib. На протяжении этой статьи мы будем редактировать Game.h и Game.cpp.

Сравниваем с финальной версией
Будет полезно в течение работы сравнивать текущую версию кода с финальной, которая хранится в ветке master. С Android Studio можно легко сравнивать ветки.
Android Studio нужно знать, где находится исполняемый файл git. Как правило, его можно узнать, введя which git в терминале. Затем вы сможете обновить путь до git в Android Studio через Preferences→Version Control→Git.
Сначала нужно разрешить интеграцию с системой контроля версий:
- VCS→Enable Version Control Integration…
- Выберите git.
Теперь вы можете сравнивать свой код с версией в ветке master:
- Нажмите на текущую ветку в правом нижнем углу;
- Выберите master→Compare.

В результате откроется новое окно. Выберите вкладку «Diff». Должен появиться список файлов с разницей между ними.

Выберите любой файл, чтобы посмотреть различия.
Обзор архитектуры

Пользовательский интерфейс
На левой части графика показаны объекты, связанные с пользовательским интерфейсом.
OpenGL Surface вызывает tick() каждый раз, когда экран нужно обновить, как правило, 60 раз в секунду. Затем Game даёт объектам для рендеринга интерфейса указание отобразить пиксели на поверхности OpenGL, после чего экран обновляется.
Интерфейс игры очень простой: единственный метод SetGLScreenColor() обновляет цвет экрана.
События нажатий
При каждом нажатии на экран вызывается метод tap() , в который передаётся время нажатия.
Аудио
На правой части графика показаны объекты, связанные с аудио. Oboe предоставляет класс AudioStream и связанные объекты, чтобы дать возможность Game отправлять аудиоданные на выходное устройство (динамики или наушники).
Каждый раз, когда AudioStream требуется больше данных, он вызывает метод AudioDataCallback::onAudioReady() . Он передаёт массив audioData в Game , где массив должен заполниться фреймами аудио в количестве numFrames .
Проигрываем звук при нажатии на экран
Чтобы воспроизвести звук хлопка нужен файл, в котором содержатся цифровые аудиоданные и аудиопоток.
Загружаем файл со звуком
В проекте в папке src/main/assets есть файл CLAP.raw, который содержит PCM-аудиоданные в следующем формате:
- Формат: 16-битное целое число;
- Каналы: 2 (стерео);
- Частота дискретизации: 48,000 кГц.
Если вы хотите просмотреть или воспроизвести этот файл, вы можете загрузить его в аудиоредактор Audacity, перейдя в меню по вкладкам File→Import→Raw Data и использовать указанные выше опции.
Чтобы загрузить этот файл в игру, нужно использовать метод SoundRecording::loadFromAssets . Откройте Game.h и объявите поле типа SoundRecording* с именем mClap и значением nullptr :
private: //. имеющийся код SoundRecording *mClap;
Теперь откройте Game.cpp и добавьте следующий код в метод start() :
void Game::start()
Это необходимо для загрузки PCM-аудиоданных в объект SoundRecording в начале игры.
Создаём аудиопоток
Чтобы создать аудиопоток, воспользуемся AudioStreamBuilder , который позволяет указывать желаемые свойства аудиопотока до его создания.
Устанавливаем свойства потока
Свойства потока должны совпадать со свойствами источника.
Откройте Game.h и объявите поле типа AudioStream* с именем mAudioStream :
private: // . имеющийся код. AudioStream *mAudioStream;
Теперь добавьте следующий код в метод start() в Game.cpp:
void Game::start() < // . имеющийся код. AudioStreamBuilder builder; builder.setFormat(AudioFormat::I16); builder.setChannelCount(2); builder.setSampleRate(48000); >
Настраиваем обратный вызов
Воспользуемся обратным вызовом для передачи аудиоданных в поток. Мы делаем именно так, потому что такой подход обеспечивает лучшую производительность.
Чтобы использовать обратный вызов, нужно объявить объект, который реализует интерфейс AudioDataCallback . Вместо создания нового объекта можно реализовать этот интерфейс в Game . Откройте Game.h, найдите строку class Game < и замените её на class Game : public AudioStreamCallback < .
Теперь нужно переопределить метод AudioStreamCallback::onAudioReady() :
public: // . имеющийся код. // Наследуется от oboe::AudioStreamCallback DataCallbackResult onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) override;
Параметр audioData для onAudioReady является массивом, который заполняется аудиоданными с помощью mClap->renderAudio .
Примечание Каждый раз, когда вы получаете контейнерный массив типа void * , не забывайте привести его к формату текущего потока данных и предоставляйте данные только в этом формате. В противном случае это обернётся ужасными шумами!
Добавим реализацию onAudioReady() в Game.cpp:
// . имеющийся код. DataCallbackResult Game::onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) < mClap->renderAudio(static_cast(audioData), numFrames); return DataCallbackResult::Continue; >
Возвращаемое значение DataCallbackResult::Continue говорит потоку о вашем намерении продолжать посылать аудиоданные, а это значит, что обратные вызовы должны продолжаться. Если вернуть DataCallbackResult::Stop , обратные вызовы прекратятся и поток больше не будет воспроизводить аудио.
Чтобы завершить создание обратного вызова, нужно сообщить конструктору потоков, где найти объект обратного вызова с помощью setCallback() в start() :
void Game::start() < // . имеющийся код. builder.setSampleRate(48000); builder.setCallback(this); >
Создание и запуск аудиопотока
Когда всё готово, создать и запустить поток не составляет труда. Добавьте этот код в start() :
void Game::start() < // . имеющийся код. builder.setCallback(this); // Создаём поток Result result = builder.openStream( if (result != Result::OK)< LOGE(«Failed to open stream. Error: %s», convertToText(result)); >// Запускаем поток result = mAudioStream->requestStart(); if (result != Result::OK) < LOGE(«Failed to start stream. Error: %s», convertToText(result)); >>
Проверка ошибок: всегда проверяйте результат операций потока и тщательно обрабатывайте все ошибки. Почти все методы в Oboe возвращают объект Result , который можно проверить на наличие Result::OK и привести к читабельной строке с помощью convertToText() .
Обработка нажатий
Метод tap() вызывается при каждом нажатии на экран. Начнём воспроизведение звука хлопка, вызвав setPlaying() . Добавьте этот код в tap() :
void Game::tap(int64_t eventTimeAsUptime) < mClap->setPlaying(true); >
Соберите и запустите приложение. При нажатии на экран вы должны услышать звук хлопка.
Оптимизация задержки аудиопотока
Как вы могли заметить, между нажатием на экран и воспроизведением звука проходит определённое время, которое называют задержкой. Как правило, она исходит из двух источников: тачскрина и аудиопотока.