Android停止计数器和销毁媒体播放器

时间:2010-06-12 23:30:22

标签: android timer media-player

我正在开发一款每秒都会发出哔哔声的应用。当我按下主页按钮时,我希望它关闭程序并停止发出哔哔声。现在它关闭了程序,但继续发出哔哔声。

我做错了什么?

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

3 个答案:

答案 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()方法?

你可以杀死那里的柜台。不要自己杀死活动,系统会在适当的时候为你做这件事。