Android NDK захватывая ключевые события - PullRequest
3 голосов
/ 29 апреля 2011

У меня есть игра 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;
    }
}

Ответы [ 2 ]

3 голосов
/ 30 апреля 2011

Попробуйте это:

  @Override
  public boolean dispatchKeyEvent(KeyEvent event)
  {
          //
          // SEND event.getAction() to your NDK code
          //
          if(<NDK CODE PROCESSED IT>) return true;

          // default behavior for everything else
          return super.dispatchKeyEvent(event);
  }
0 голосов
/ 29 апреля 2011

(ввод из памяти, поэтому синтаксис может быть не 100%, но ...) согласно моему комментарию ... вы делаете это ...?

класс myAct расширяет Activity, реализует View.onKeyListener

myButton.setOnKeyListener (this)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...