Android:我如何抓住主页按钮按下

时间:2011-07-20 13:02:14

标签: android

我正在开发音乐应用程序。我有一个Activity我有一个包含曲目的列表。我可以选择一个曲目然后移动到另一个活动以播放所选曲目。我也有Service课程,当我按下主页按钮时,我希望它启动服务(在后台播放音乐)并移动到主屏幕。

另外,我有方法OnBackPressed(),以便转到上一个Activity

怎么样,我可以截取主页按钮按下?谢谢,为你的答案。

2 个答案:

答案 0 :(得分:3)

而不是按下主页按钮,你可能想要更多地充实Android生命周期并使用onPause()代替。如果您覆盖活动的onPause()方法来启动服务,那么只要用户暂时离开活动,即“回家”,就可以获得所需而无需按下所有按钮。

如果您希望服务在用户离开活动时启动,并且比如转到另一个应用程序,则生命周期就是您的朋友。您可能想要考虑当用户收到电子邮件通知并以此方式离开您的应用程序时会发生什么。你想要服务也开始吗?用户没有按下主页按钮,因此您的服务无法启动,但他们确实离开了您的应用程序。您希望该服务在该方案中启动吗?

听起来您希望服务在用户离开该活动时启动,因此如果是这种情况,请查看覆盖onPause()

更多关于android生命周期的信息:

http://developer.android.com/reference/android/app/Activity.html

您只需要添加此方法:

@Override
protected void onPause(){
    <start your service here>
}

修改:尝试将此尝试作为无法拦截主页按钮的解决方法,设置back_flag

public class Your_Activity extends Activity {
    private boolean back_flag = false;

    .
    .
    .

    public void onBackPressed(){
        back_flag = true;
        <whatever else you have in onBackPressed()>
    }

    @Override
    protected void onPause(){
        if(!back_flag){
            <start your service>
        }
        back_flag = false;
        super.onPause();
    }
}

同样,如果它没有注册住宅,这是我现在能想到的唯一工作。

答案 1 :(得分:1)

Android设计为不允许您的应用程序像后退按钮一样中断主页按钮。这是一个“按设计工作”的功能。可以使用onKeyDown捕获后退按钮,但主页不会。

你唯一能做的就是听取HOME意图。在你的清单中添加一个这样的块:

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

现在就是这样......当用户在安装你的应用程序后点击主页按钮时,Android会弹出一个“你想做什么”,他们可以将默认设置为默认主屏幕或你的应用程序。在他们选择默认值后,他们再也看不到那个选择器。

正如您所看到的,除了主屏幕替换应用程序之外,它对大多数内容都没用。

确保完全测试任何其他解决方法,例如OnPause建议。如果屏幕超时,您的应用会按预期运行吗?