Como impedir que o teclado virtual apareça na minha atividade?

Estou escrevendo um jogo para Android que roda no modo paisagem em tela cheia e tem botões colocados na parte inferior esquerda e na parte inferior direita da janela. O problema é que um desses botões está (em muitos telefones) ao lado do botão Menu; portanto, o player pode pressionar Menu acidentalmente.

Se for pressionado brevemente, simplesmente pause o jogo e mostro o menu do jogo. Não tem problema.

Mas se o botão for pressionado por mais tempo, o Android abrirá o teclado virtual na metade inferior da tela. Como ele atrapalha e é completamente inútil nesta atividade, eu gostaria de desativá-lo.

Eu tentei as seguintes abordagens.

Via InputMethodManager

De:Oculte o teclado virtual em atividade sem nenhuma operação do teclado

Como tenho apenas uma visualização (umaGLSurfaceView) Eu tentei isso no meuActivity.onCreate():

InputMethodManager imm = ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE));
imm.hideSoftInputFromInputMethod(glSurfaceView.getApplicationWindowToken(), 0);

Não funciona: o teclado virtual ainda aparece no Menu pressionando longamente.

Por meio do AndroidManifest.xml

De:Como impedir que o teclado virtual Android apareça em todo o meu aplicativo

Adicionei isso ao meu manifesto:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Também não faz muita coisa.

Então ... existe mesmo um jeito? Quão?

questionAnswers(4)

yourAnswerToTheQuestion