2013-03-13 48 views
0

我正在制作游戏,如果用户以任何方式留下活动(按下后退或主键),则活动需要通过张贴到脚本来结束游戏并且结束活动。Android - 查看是否按Home键

我可以检测是否按下了后退键,但是,我无法找到任何有效的方法来检测Home键是否被按下。我不能只是在Activity_Pause方法中结束游戏,因为我们假设用户在游戏中间接到电话。

我知道你不能捕获该事件,但是,有人发现了一种方法来查看该活动是否由用户留下,而不是像发送给后台的电话那样。

+0

这是不可能的。有一项非常复杂的工作是不值得的。 – 2013-03-13 00:25:41

+0

如果你指的是基于时间的,那么我同意这不是一个真正的解决方案。这似乎是一个与android的巨大问题。我明白无法捕捉事件,但我们至少应该能够看到它是否被解雇。 – grant1842 2013-03-13 00:29:12

+0

不,它不是时间基础,但你必须重写一堆方法,那么你可以从中扣除一个HOME KEY被按下。但是,除非您使用服务,否则您不能发布脚本。 – 2013-03-13 00:49:53

回答

1

确定这里重复是周围的工作,如果你坚持。 Android的下一个版本可能会关闭这个漏洞。

boolean mKeyPress; 
boolean mUserLeaveHint; 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    mKeyPress = true; 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
protected void onUserLeaveHint() 
{ 
    super.onUserLeaveHint(); 
    mUserLeaveHint = true; 
} 

@Override 
protected void onPause() 
{ 
    super.onPause(); 
    if (!mKeyPress && mUserLeaveHint) 
    { 
     // HOME_KEY is pressed 
    } 
} 
+0

如果没有键盘被按下,我认为上面的所有内容都正常。如果有键盘按下,那么一旦有更多的抽搐。 – 2013-03-24 23:53:54

-2

貌似这一个

Android, How to receive home button click through broadcast receiver?

@Override 
public boolean dispatchKeyEvent(KeyEvent keyevent) { 

    if (keyevent.getKeyCode() == KeyEvent.KEYCODE_HOME) { 
     //Do here what you want 
     return true; 
    } 
    else 
     return super.dispatchKeyEvent(event); 
} 
+2

public static final int KEYCODE_HOME 在API级别1中添加 关键代码常量:主键。该密钥由框架处理,并且永远不会传递给应用程序。 常数值:3(0x00000003) – grant1842 2013-03-13 00:17:25