Как я могу сказать, когда активность останавливается, а приложение останавливается? - PullRequest
1 голос
/ 28 февраля 2012

Полагаю, мне все еще нужно узнать, как работают приложения Android. Название может быть не совсем понятным, поэтому позвольте мне объяснить.

Положение : У меня есть игра, в которой есть несколько разных видов деятельности. Например, MenuActivity, GameActivity и HowToActivity. Игра начинается в MenuActivity и воспроизводит песню, установленную на петлю. Чтобы воспроизводить одну и ту же песню во время MenuActivity и HowToActivity, без прерывания, у меня есть песня, воспроизводимая с внедренного Application. Если я нажму кнопку «Домой», возьму телефон или что-то еще, песня продолжит играть. Чтобы предотвратить это, мне нужно остановить песню при выходе из приложения.

Задача : В настоящее время в MenuActivity у меня есть код для остановки песни под функцией protected void onStop(). Это останавливает песню при выходе из приложения (нажав кнопку «Домой», чтобы получить телефонный звонок), но также останавливает песню при переходе на другое действие в приложении, например HowToActivity. Вопрос в том, как я могу определить разницу?

Ответы [ 3 ]

1 голос
/ 28 февраля 2012

Джесси, Вы должны иметь службу, которая сделает всю работу по воспроизведению песни. Вы можете легко запустить сервис из любой активности вашего приложения. Также услуга может быть остановлена ​​любым видом деятельности. Следовательно, в действии onCreate () вы можете запустить службу проигрывателя песен, которая будет воспроизводить песню, даже если действие умирает и начинается новое действие. Как только ваше приложение будет завершено с воспроизведением песни, просто вызовите stopService (). Я надеюсь, что это решит вашу проблему.

~ Rajan

1 голос
/ 28 февраля 2012

Обычно случается, что люди читают состояние телефона с помощью PhoneStateListener:

http://developer.android.com/reference/android/telephony/PhoneStateListener.html

Вот почему так многим приложениям требуется разрешение READ_PHONE_STATE, и они уверены, что вы нене отвечает на звонок, пока приложение выключается и продолжает что-то раздражать.Вы можете создать слушателя, чтобы проверить, когда такие вещи случаются.Вы не должны действительно изменять поведение клавиши home (и не можете!), Но вместо этого вы всегда можете прослушивать такие вещи, как onPause () и onStop ().

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

Редактирование: учебное пособие для MediaPlayer из службы:

http://marakana.com/forums/android/examples/60.html

Возможно, вы захотите использовать блокировку пробуждения, хотя в этом нет необходимости.

0 голосов
/ 28 февраля 2012

Создайте приемник для захвата следующего намерения:

Intent.ACTION_CLOSE_SYSTEM_DIALOGS

Он будет вызываться при запуске главного экрана телефона.Поэтому вы можете остановить музыку в это время, а не останавливать onStop () Activity.

Но это не поможет, если пользователь запустит приложение, нажав долгое время клавишу Home.

Поэтому попробуйтеиграть разную музыку на разных экранах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...