Android Open Source - CoreGame Keyboard Handler






From Project

Back to project page CoreGame.

License

The source code is released under:

Copyright (c) 2011 Andrey Moiseev, http://o2genum.ru Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),...

If you think the Android project CoreGame listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package ru.o2genum.coregame.framework.impl; 
/*from w  w  w .  ja v a2  s  .c  o  m*/
import java.util.ArrayList;
import java.util.List;

import android.view.View;
import android.view.View.OnKeyListener;

import ru.o2genum.coregame.framework.Input.KeyEvent;
import ru.o2genum.coregame.framework.Pool;
import ru.o2genum.coregame.framework.Pool.PoolObjectFactory;

public class KeyboardHandler implements OnKeyListener {
    boolean[] pressedKeys = new boolean[128];
    Pool<KeyEvent> keyEventPool;
    List<KeyEvent> keyEventsBuffer = new ArrayList<KeyEvent>();    
    List<KeyEvent> keyEvents = new ArrayList<KeyEvent>();

    public KeyboardHandler(View view) {
        PoolObjectFactory<KeyEvent> factory = new PoolObjectFactory<KeyEvent>() {
            @Override
            public KeyEvent createObject() {
                return new KeyEvent();
            }
        };
        keyEventPool = new Pool<KeyEvent>(factory, 100);
        view.setOnKeyListener(this);
        view.setFocusableInTouchMode(true);
        view.requestFocus();
    }

    @Override
    public boolean onKey(View v, int keyCode, android.view.KeyEvent event) {
        if (event.getAction() == android.view.KeyEvent.ACTION_MULTIPLE)
            return false;

        synchronized (this) {
            KeyEvent keyEvent = keyEventPool.newObject();
            keyEvent.keyCode = keyCode;
            keyEvent.keyChar = (char) event.getUnicodeChar();
            if (event.getAction() == android.view.KeyEvent.ACTION_DOWN) {
                keyEvent.type = KeyEvent.KEY_DOWN;
                if(keyCode > 0 && keyCode < 127)
                    pressedKeys[keyCode] = true;
            }
            if (event.getAction() == android.view.KeyEvent.ACTION_UP) {
                keyEvent.type = KeyEvent.KEY_UP;
                if(keyCode > 0 && keyCode < 127)
                    pressedKeys[keyCode] = false;
            }
            keyEventsBuffer.add(keyEvent);
        }
        return false;
    }

    public boolean isKeyPressed(int keyCode) {
        if (keyCode < 0 || keyCode > 127)
            return false;
        return pressedKeys[keyCode];
    }

    public List<KeyEvent> getKeyEvents() {
        synchronized (this) {
            int len = keyEvents.size();
            for (int i = 0; i < len; i++)
                keyEventPool.free(keyEvents.get(i));
            keyEvents.clear();
            keyEvents.addAll(keyEventsBuffer);
            keyEventsBuffer.clear();
            return keyEvents;
        }
    }
}




Java Source Code List

ru.o2genum.coregame.framework.Audio.java
ru.o2genum.coregame.framework.FileIO.java
ru.o2genum.coregame.framework.Game.java
ru.o2genum.coregame.framework.Graphics.java
ru.o2genum.coregame.framework.Input.java
ru.o2genum.coregame.framework.Pool.java
ru.o2genum.coregame.framework.Screen.java
ru.o2genum.coregame.framework.Sound.java
ru.o2genum.coregame.framework.Vibration.java
ru.o2genum.coregame.framework.impl.AndroidAudio.java
ru.o2genum.coregame.framework.impl.AndroidFastRenderView.java
ru.o2genum.coregame.framework.impl.AndroidFileIO.java
ru.o2genum.coregame.framework.impl.AndroidGame.java
ru.o2genum.coregame.framework.impl.AndroidGraphics.java
ru.o2genum.coregame.framework.impl.AndroidInput.java
ru.o2genum.coregame.framework.impl.AndroidOrientationHandler.java
ru.o2genum.coregame.framework.impl.AndroidSound.java
ru.o2genum.coregame.framework.impl.AndroidVibration.java
ru.o2genum.coregame.framework.impl.KeyboardHandler.java
ru.o2genum.coregame.framework.impl.MultiTouchHandler.java
ru.o2genum.coregame.framework.impl.OrientationHandler.java
ru.o2genum.coregame.framework.impl.SingleTouchHandler.java
ru.o2genum.coregame.framework.impl.TouchHandler.java
ru.o2genum.coregame.game.Core.java
ru.o2genum.coregame.game.Dot.java
ru.o2genum.coregame.game.GameActivity.java
ru.o2genum.coregame.game.GameScreen.java
ru.o2genum.coregame.game.VectorF.java
ru.o2genum.coregame.game.World.java