2013-03-13 1 views
0

Я делаю игру, и если действие осталось каким-либо образом пользователем (нажатие клавиши «Назад» или «Домой»), действие должно завершиться игрой путем публикации сценария и заканчивая деятельность.Android - проверьте, нажат ли домашний ключ

Я могу определить, нажата ли клавиша «назад», однако я не могу найти какой-либо действительный метод для определения, нажата ли домашняя клавиша. Я не могу просто закончить игру в методе Activity_Pause, потому что предположим, что пользователь получает телефонный звонок в середине игры.

Я понимаю, что вы не можете поймать событие, однако, кто-нибудь нашел способ увидеть, была ли активность оставлена ​​пользователем, а не что-то другое, как телефонный звонок, отправляющий его на задний план.

+0

Это невозможно. Существует очень сложная работа, которая не стоит того. –

+0

Если вы имеете в виду время, основанное на времени, то я согласен, что это не настоящее решение. Это действительно кажется огромной проблемой для Android. Я понимаю, что не в состоянии поймать это событие, но мы должны, по крайней мере, понять, был ли он уволен. – grant1842

+0

Нет, это не временная база, но вам нужно переопределить кучу методов, после чего вы можете вычесть из них, что нажата HOME KEY. Но тогда вы не сможете публиковать скрипт, если вы не используете службу. –

ответ

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

Я думаю, что все вышеописанное, если клавиатура не нажата. Если есть нажатие на клавиатуру, тогда один раз нужно сделать еще немного подергивания. –

-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