Вы не можете напрямую перехватить кнопку 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