Работа Android-приложения в фоне
Сегодня я сделал обновление для “Color Rain”. Устранил небольшие ошибки, добавил стартовый экран, режим паузы и фоновую музыку. При добавлении музыки я заметил интересную особенность.
По умолчанию, android-приложение “замораживается” при сворачивании, то есть останавливаются все таймеры, анимация, но не музыка. :) Музыка продолжает проигрываться в фоне.
Для того, чтобы приложение корректно работало в фоне, нам нужно изменить файл AndoidManifest.xml. При создании нового android приложения Qt Creator не создает AndoidManifest.xml автоматически, при этом во время сборки и установки под android он использует собственный “шаблон” AndroidManifest’a.
Создадим AndoidManifest.xml, который включает в себя “шаблон” AndroidManifest’a от Qt:
Проекты -> Добавить сборку под Andoid -> Открываем вкладку “Сборка” -> Нажимаем “Подробнее” в "Собрать Android APK” -> Нажимаем “Создать шаблоны”.
Далее нам нужно найти и заменить
<meta-data android:name="android.app.background_running" android:value="false"/>
на
<meta-data android:name="android.app.background_running" android:value="true"/>
Всё, теперь наше приложение работает в фоне.
Для остановки проигрывания музыки нам поможет следующая переменная:
property bool active: Qt.application.state !== Qt.ApplicationSuspended
При изменении значения переменной active c true на false останавливаем всю музыку.
Audio { id: music
loops: Audio.Infinite source: "qrc:/audio/rainbows.ogg" volume: 0.15 Component.onCompleted: { play(); } } onActiveChanged: { if (active) { music.play() } else { music.pause() } }






