我正在开发一款每秒都会发出哔哔声的应用。当我按下主页按钮时,我希望它关闭程序并停止发出哔哔声。现在它关闭了程序,但继续发出哔哔声。
我做错了什么?
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
isdone = true;
mp.release();
counter.cancel();
finish();
}
答案 0 :(得分:1)
当我按下主页按钮时,我想要它 关闭程序并停止发出哔哔声。
您无法从应用程序代码中截取HOME按钮 - 抱歉!
答案 1 :(得分:0)
您无法直接截取HOME按钮,但解决方法是将您的应用程序启动活动设为HOME intent / default 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 OS,它位于android.policy.jar中的PhoneWindowManager.java类中。 但是,如果您完全控制设备并将应用程序与设备捆绑在一起,或者它是一个内部应用程序,您将设备交付给用户并控制您部署的ROM,那么这也是有意义的。
还有一个有用的讨论,其中包含有关HOME按钮的更多链接: http://www.anddev.org/home_menu_button-t10232.html
答案 2 :(得分:0)
点击主页按钮时,是否调用了您的活动的onPause()
方法?
你可以杀死那里的柜台。不要自己杀死活动,系统会在适当的时候为你做这件事。