我正在制作游戏,如果用户以任何方式留下活动(按下后退或主键),则活动需要通过张贴到脚本来结束游戏并且结束活动。Android - 查看是否按Home键
我可以检测是否按下了后退键,但是,我无法找到任何有效的方法来检测Home键是否被按下。我不能只是在Activity_Pause方法中结束游戏,因为我们假设用户在游戏中间接到电话。
我知道你不能捕获该事件,但是,有人发现了一种方法来查看该活动是否由用户留下,而不是像发送给后台的电话那样。
我正在制作游戏,如果用户以任何方式留下活动(按下后退或主键),则活动需要通过张贴到脚本来结束游戏并且结束活动。Android - 查看是否按Home键
我可以检测是否按下了后退键,但是,我无法找到任何有效的方法来检测Home键是否被按下。我不能只是在Activity_Pause方法中结束游戏,因为我们假设用户在游戏中间接到电话。
我知道你不能捕获该事件,但是,有人发现了一种方法来查看该活动是否由用户留下,而不是像发送给后台的电话那样。
确定这里重复是周围的工作,如果你坚持。 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
}
}
如果没有键盘被按下,我认为上面的所有内容都正常。如果有键盘按下,那么一旦有更多的抽搐。 – 2013-03-24 23:53:54
貌似这一个
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);
}
public static final int KEYCODE_HOME 在API级别1中添加 关键代码常量:主键。该密钥由框架处理,并且永远不会传递给应用程序。 常数值:3(0x00000003) – grant1842 2013-03-13 00:17:25
这是不可能的。有一项非常复杂的工作是不值得的。 – 2013-03-13 00:25:41
如果你指的是基于时间的,那么我同意这不是一个真正的解决方案。这似乎是一个与android的巨大问题。我明白无法捕捉事件,但我们至少应该能够看到它是否被解雇。 – grant1842 2013-03-13 00:29:12
不,它不是时间基础,但你必须重写一堆方法,那么你可以从中扣除一个HOME KEY被按下。但是,除非您使用服务,否则您不能发布脚本。 – 2013-03-13 00:49:53