В моем приложении есть несколько действий, и на заднем плане есть музыка, и я хочу, чтобы музыка начиналась, когда приложение запускается и заканчивает воспроизведение, когда приложение идет на задний план. Есть ли какое-либо проворное решение, или я должен реализовать какую-то систему, которая управляет воспроизведением в каждом действии? Заранее спасибо.Обработка воспроизведения музыки в приложении с несколькими действиями
ответ
Вы можете воспроизвести музыкальный файл, используя сервис, который можно запустить и остановить в любое время.
Это не решит проблему, так как я не могу точно знать, где остановиться. Пользователь может перейти от одного действия к предыдущему - и тогда я не должен останавливать воспроизведение, но он также может закрыть все приложение - и настало время его остановить. Есть идеи? – Egor
Проверьте ActivityManager, чтобы узнать информацию о состоянии приложения и все. –
Реализация его с использованием службы MediaPlayer - это самый простой способ добиться этого.
Если вы реализуете его в своей деятельности вы должны -
- Каждый вид деятельности должен будет знать текущую песню, которую вы играете, текущее время воспроизведения.
- Когда вы запускаете новое действие, вам нужно будет остановить медиаплеер в текущем действии и возобновить его в новом действии и искать его, прежде чем вы сможете начать воспроизводить его.
- Будет происходить сбой в воспроизведении звука. Что становится раздражающим для пользователя, если он продолжает переключаться между действиями.
Если вы реализуете его в качестве службы -
- Вы должны общаться с новым видом деятельности, что музыка играет. Просто передайте boolean (
isplaying
) - Каждое действие будет или, скорее, должно знать, является ли оно последней активностью до того, как приложение закрыто. Если он знает эту информацию, тогда все, что нужно сделать, это проверить флаг и повторно приобрести услугу и закрыть ее до ее выхода.
- Не будет глюков во время переключения между действиями.
На самом деле, есть только один саундтрек, и он просто петли навсегда. Основная проблема заключается в том, что каждое действие может быть последним, так как пользователь может просто нажать кнопку «Главная страница», и музыка останется играть, что является большой проблемой. – Egor
Да, это была проблема, о которой я говорил, вы не можете запустить экземпляр медиа-слотера в одном действии и забыть об этом, вам придется брать с собой каждого в каждом действии. Но с услугой вы можете повторно приобрести услугу в любой момент времени, но все равно воспроизводить звук в фоновом режиме без каких-либо сбоев. – bluefalcon
создать файл класса, который расширяет метку приложения и начать воспроизведение музыки в методе oncreate().
public class MyApp extends Application {
@Override
public void onCreate() {
//start music in a service
}
}
из parentActivity, запускать другие мероприятия по вызывающему деятельности: StartActivityForResult(), так что, когда заканчивается ребенок активность, parentActivity должны знать, когда заканчивается деятельность, это приводит к деятельности :: onActivityResult().
В этом случае вы можете начать воспроизведение мультимедиа в основной родительской активности, и вы можете завершить музыку (услугу) при нажатии.
За исключением любого HomeButtonClicks во всех действиях и приостановки/остановки проигрывателя (завершение службы).
Прежде всего, обращение к кнопкам Home Button разрешено только для приложений Launher. Во-вторых, начало воспроизведения музыки в объекте Application и остановка в другом месте - плохая практика. –
Эта ссылка поможет вам сделать это без использования сервиса: http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion – Arash