Android Stop Counter и уничтожить медиаплеер - PullRequest
2 голосов
/ 13 июня 2010

Я работаю над приложением, которое подает звуковой сигнал каждую секунду.Когда я нажимаю кнопку «Домой», я хочу, чтобы она закрыла программу и перестала издавать звуковые сигналы.Сейчас он закрывает программу, но продолжает издавать звуковые сигналы.

Что я делаю не так?

        if ((keyCode == KeyEvent.KEYCODE_HOME)) {
        isdone = true;
        mp.release();
        counter.cancel();
        finish();
    }

Ответы [ 3 ]

1 голос
/ 13 июня 2010

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

Вы не можете перехватить кнопку HOME из кода своего приложения - извините!

0 голосов
/ 13 июня 2010

Не вызывается ли метод вашей деятельности onPause(), когда вы нажимаете кнопку "Домой"?

Вы можете убить счетчик там.Не убивайте действия самостоятельно, система сделает это за вас, когда это будет уместно.

0 голосов
/ 13 июня 2010

Вы не можете напрямую перехватить кнопку HOME, хотя временным решением может быть то, что ваше приложение запускается как домашнее задание по умолчанию; в вашем xml-манифесте это будет выглядеть так:

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
    <category android:name="android.intent.category.HOME"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

Таким образом, когда пользователь нажимает кнопку «Домой», вы ведете пользователя к стартовой активности вашего приложения, отсюда вы можете перенаправить его к любой другой предыдущей активности, т. Е. Предварительно сохранив состояние пользователя. В упражнении, которое вы упомянули выше, где у вас есть звуковой сигнал, вы должны поместить команду остановки в onPause или onWindowFocusChanged.

Этот вышеупомянутый подход имеет смысл только в определенных случаях, хотя и зависит от логики / бизнес-ситуации вашего приложения и среды, в которой вы собираетесь его развертывать.

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

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

Если вы действительно хотите захватить кнопку HOME, вам нужно изменить ОС Android, она находится в классе PhoneWindowManager.java, который входит в android.policy.jar. Но это также имеет смысл только в том случае, если вы полностью контролируете устройства и т. Е. Связываете свое приложение с устройством или если это внутреннее приложение, где вы доставляете устройства пользователям и контролируете, какое ПЗУ вы развертываете.

Существует также полезное обсуждение с дополнительными ссылками на кнопку HOME: http://www.anddev.org/home_menu_button-t10232.html

...