2012-01-09 1 views
1

В моем приложении есть несколько действий, и на заднем плане есть музыка, и я хочу, чтобы музыка начиналась, когда приложение запускается и заканчивает воспроизведение, когда приложение идет на задний план. Есть ли какое-либо проворное решение, или я должен реализовать какую-то систему, которая управляет воспроизведением в каждом действии? Заранее спасибо.Обработка воспроизведения музыки в приложении с несколькими действиями

+0

Эта ссылка поможет вам сделать это без использования сервиса: http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion – Arash

ответ

2

Вы можете воспроизвести музыкальный файл, используя сервис, который можно запустить и остановить в любое время.

+0

Это не решит проблему, так как я не могу точно знать, где остановиться. Пользователь может перейти от одного действия к предыдущему - и тогда я не должен останавливать воспроизведение, но он также может закрыть все приложение - и настало время его остановить. Есть идеи? – Egor

+0

Проверьте ActivityManager, чтобы узнать информацию о состоянии приложения и все. –

0

Реализация его с использованием службы MediaPlayer - это самый простой способ добиться этого.

Если вы реализуете его в своей деятельности вы должны -

  • Каждый вид деятельности должен будет знать текущую песню, которую вы играете, текущее время воспроизведения.
  • Когда вы запускаете новое действие, вам нужно будет остановить медиаплеер в текущем действии и возобновить его в новом действии и искать его, прежде чем вы сможете начать воспроизводить его.
  • Будет происходить сбой в воспроизведении звука. Что становится раздражающим для пользователя, если он продолжает переключаться между действиями.

Если вы реализуете его в качестве службы -

  • Вы должны общаться с новым видом деятельности, что музыка играет. Просто передайте boolean (isplaying)
  • Каждое действие будет или, скорее, должно знать, является ли оно последней активностью до того, как приложение закрыто. Если он знает эту информацию, тогда все, что нужно сделать, это проверить флаг и повторно приобрести услугу и закрыть ее до ее выхода.
  • Не будет глюков во время переключения между действиями.
+0

На самом деле, есть только один саундтрек, и он просто петли навсегда. Основная проблема заключается в том, что каждое действие может быть последним, так как пользователь может просто нажать кнопку «Главная страница», и музыка останется играть, что является большой проблемой. – Egor

+0

Да, это была проблема, о которой я говорил, вы не можете запустить экземпляр медиа-слотера в одном действии и забыть об этом, вам придется брать с собой каждого в каждом действии. Но с услугой вы можете повторно приобрести услугу в любой момент времени, но все равно воспроизводить звук в фоновом режиме без каких-либо сбоев. – bluefalcon

0

создать файл класса, который расширяет метку приложения и начать воспроизведение музыки в методе oncreate().

public class MyApp extends Application { 
@Override 
public void onCreate() { 
     //start music in a service 
    } 
} 

из parentActivity, запускать другие мероприятия по вызывающему деятельности: StartActivityForResult(), так что, когда заканчивается ребенок активность, parentActivity должны знать, когда заканчивается деятельность, это приводит к деятельности :: onActivityResult().

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

За исключением любого HomeButtonClicks во всех действиях и приостановки/остановки проигрывателя (завершение службы).

+0

Прежде всего, обращение к кнопкам Home Button разрешено только для приложений Launher. Во-вторых, начало воспроизведения музыки в объекте Application и остановка в другом месте - плохая практика. –