У меня есть игра Android NDK (NDK 4.) Почти весь код написан на C ++ (это порт), поэтому в Java все, что у меня есть, это Activity и GLSurfaceView с переопределением для onTouchEvents.Я пытаюсь понять, как получать события нажатия клавиш, чтобы я мог перенаправить их в собственный код, который нужно обработать.
Я пытался использовать View, чтобы реализовать OnKeyListener, но onKey () никогда не вызывался.Также попытался переопределить onKeyDown () и onKeyUp () в представлении, но безуспешно.Я что-то упустил?
Обновление
Вид, которым я сейчас пользуюсь:
public class FooView extends GLSurfaceView implements SurfaceHolder.Callback, OnKeyListener
{
private GameRenderer _renderer;
private GameListener _listener;
public FooView(Context context)
{
super(context);
this._renderer = new GameRenderer();
setRenderer(this._renderer);
this._listener = new GameListener(context);
BaseLib.setListener(this._listener);
}
@Override
public boolean onTouchEvent(final MotionEvent event)
{
// touch code...
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
Log.d("testing", "onKeyDown event from Java");
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
Log.d("testing", "onKeyUp event from Java");
return super.onKeyUp(keyCode, event);
}
@Override
public boolean onKey(View view, int keyCode, KeyEvent event)
{
Log.d("testing", "onKey event from Java");
return true;
}
}