Android Open Source - droidengine2d Key Event Info






From Project

Back to project page droidengine2d.

License

The source code is released under:

Apache License

If you think the Android project droidengine2d 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

/*   Copyright 2013-2014 Miguel Vicente Linares
 *//w  w w.  ja va2s  . c  o m
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.miviclin.droidengine2d.input;

import android.view.KeyEvent;

import com.miviclin.collections.Pool;

/**
 * KeyEventInfo holds information about a KeyEvent.<br>
 * KeyEvents are inmutable, so DroidEngine2D uses KeyEventInfo to create mutable copies of KeyEvents so they can be
 * pooled and reused. KeyEventInfo objects are not mutable from app code.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class KeyEventInfo {

  private static final KeyEventInfoPool keyEventInfoPool = new KeyEventInfoPool();

  private int deviceId;
  private int source;
  private int metaState;
  private int action;
  private int keyCode;
  private int scanCode;
  private int repeatCount;
  private int flags;
  private long downTime;
  private long eventTime;
  private String characters;

  /**
   * Creates an uninitialized KeyEventInfo.<br>
   * {@link KeyEventInfo#copyKeyEventInfo(KeyEvent)} should be called after creating a KeyEventInfo with this
   * constructor.
   */
  private KeyEventInfo() {
  }

  /**
   * Creates a new KeyEventInfo with the information about the specified KeyEvent.
   * 
   * @param keyEvent KeyEvent.
   */
  public KeyEventInfo(KeyEvent keyEvent) {
    this.downTime = keyEvent.getDownTime();
    this.eventTime = keyEvent.getEventTime();
    this.action = keyEvent.getAction();
    this.keyCode = keyEvent.getKeyCode();
    this.repeatCount = keyEvent.getRepeatCount();
    this.metaState = keyEvent.getMetaState();
    this.deviceId = keyEvent.getDeviceId();
    this.scanCode = keyEvent.getScanCode();
    this.flags = keyEvent.getFlags();
    this.source = keyEvent.getSource();
    this.characters = keyEvent.getCharacters();
  }

  /**
   * Creates a new KeyEventInfo, copying from an existing KeyEvent.<br>
   * The KeyEventInfo is obtained from a pool. If the pool is empty, a new KeyEventInfo will be created.<br>
   * When the returned KeyEventInfo is not needed anymore, {@link KeyEventInfo#recycle()} should be called.
   * 
   * @param keyEvent KeyEvent.
   * @return KeyEventInfo.
   */
  public static KeyEventInfo obtain(KeyEvent keyEvent) {
    KeyEventInfo keyEventInfo = keyEventInfoPool.obtain();
    keyEventInfo.copyKeyEventInfo(keyEvent);
    return keyEventInfo;
  }

  /**
   * Copies the information of the specified KeyEvent into this object.
   * 
   * @param keyEvent KeyEvent.
   */
  protected void copyKeyEventInfo(KeyEvent keyEvent) {
    this.downTime = keyEvent.getDownTime();
    this.eventTime = keyEvent.getEventTime();
    this.action = keyEvent.getAction();
    this.keyCode = keyEvent.getKeyCode();
    this.repeatCount = keyEvent.getRepeatCount();
    this.metaState = keyEvent.getMetaState();
    this.deviceId = keyEvent.getDeviceId();
    this.scanCode = keyEvent.getScanCode();
    this.flags = keyEvent.getFlags();
    this.source = keyEvent.getSource();
    this.characters = keyEvent.getCharacters();
  }

  /**
   * Recycles the KeyEventInfo, to be re-used by a later caller. After calling this function you must not ever touch
   * the event again.
   */
  public void recycle() {
    keyEventInfoPool.recycle(this);
  }

  /**
   * See: {@link KeyEvent#getDeviceId()}
   */
  public int getDeviceId() {
    return deviceId;
  }

  /**
   * See: {@link KeyEvent#getSource()}
   */
  public int getSource() {
    return source;
  }

  /**
   * See: {@link KeyEvent#getMetaState()}
   */
  public int getMetaState() {
    return metaState;
  }

  /**
   * See: {@link KeyEvent#getAction()}
   */
  public int getAction() {
    return action;
  }

  /**
   * See: {@link KeyEvent#getKeyCode()}
   */
  public int getKeyCode() {
    return keyCode;
  }

  /**
   * See: {@link KeyEvent#getScanCode()}
   */
  public int getScanCode() {
    return scanCode;
  }

  /**
   * See: {@link KeyEvent#getRepeatCount()}
   */
  public int getRepeatCount() {
    return repeatCount;
  }

  /**
   * See: {@link KeyEvent#getFlags()}
   */
  public int getFlags() {
    return flags;
  }

  /**
   * See: {@link KeyEvent#getDownTime()}
   */
  public long getDownTime() {
    return downTime;
  }

  /**
   * See: {@link KeyEvent#getEventTime()}
   */
  public long getEventTime() {
    return eventTime;
  }

  /**
   * See: {@link KeyEvent#getCharacters()}
   */
  public String getCharacters() {
    return characters;
  }

  /**
   * Pool of KeyEventInfo objects.
   * 
   * @author Miguel Vicente Linares
   * 
   */
  private static class KeyEventInfoPool extends Pool<KeyEventInfo> {

    private static final int DEFAULT_INITIAL_CAPACITY = 60;

    /**
     * Creates a KeyEventInfoPool containing 60 KeyEventInfo objects.
     */
    public KeyEventInfoPool() {
      super(DEFAULT_INITIAL_CAPACITY);
      for (int i = 0; i < DEFAULT_INITIAL_CAPACITY; i++) {
        this.recycle(new KeyEventInfo());
      }
    }

    @Override
    public KeyEventInfo createObject() {
      return new KeyEventInfo();
    }

    @Override
    public final void recycle(KeyEventInfo object) {
      super.recycle(object);
    }

  }

}




Java Source Code List

com.miviclin.droidengine2d.AbstractGame.java
com.miviclin.droidengine2d.EngineActivity.java
com.miviclin.droidengine2d.EngineLock.java
com.miviclin.droidengine2d.Engine.java
com.miviclin.droidengine2d.GameThread.java
com.miviclin.droidengine2d.Game.java
com.miviclin.droidengine2d.audio.MusicPlayer.java
com.miviclin.droidengine2d.audio.SoundManager.java
com.miviclin.droidengine2d.gamestate.GameStateAdapter.java
com.miviclin.droidengine2d.gamestate.GameStateManager.java
com.miviclin.droidengine2d.gamestate.GameStateNotRegisteredException.java
com.miviclin.droidengine2d.gamestate.GameState.java
com.miviclin.droidengine2d.gamestate.OnGameStateChangeListener.java
com.miviclin.droidengine2d.graphics.Color.java
com.miviclin.droidengine2d.graphics.DefaultRenderer.java
com.miviclin.droidengine2d.graphics.EngineRenderer.java
com.miviclin.droidengine2d.graphics.GLDebugger.java
com.miviclin.droidengine2d.graphics.GLRenderer.java
com.miviclin.droidengine2d.graphics.GLView.java
com.miviclin.droidengine2d.graphics.Graphics.java
com.miviclin.droidengine2d.graphics.animation.AnimationFrame.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateAdapter.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateListener.java
com.miviclin.droidengine2d.graphics.animation.Animation.java
com.miviclin.droidengine2d.graphics.cameras.Camera.java
com.miviclin.droidengine2d.graphics.cameras.OrthographicCamera.java
com.miviclin.droidengine2d.graphics.material.BlendingOptions.java
com.miviclin.droidengine2d.graphics.material.ColorMaterial.java
com.miviclin.droidengine2d.graphics.material.Material.java
com.miviclin.droidengine2d.graphics.material.TextureColorMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureHsvMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureMaterial.java
com.miviclin.droidengine2d.graphics.material.TransparentTextureMaterial.java
com.miviclin.droidengine2d.graphics.material.UnsupportedMaterialException.java
com.miviclin.droidengine2d.graphics.mesh.ColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.Geometry.java
com.miviclin.droidengine2d.graphics.mesh.GraphicsBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchGeometry.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureHsvMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRendererBase.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TransparentTextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgramException.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgram.java
com.miviclin.droidengine2d.graphics.shader.ShaderVars.java
com.miviclin.droidengine2d.graphics.text.BitmapFont.java
com.miviclin.droidengine2d.graphics.text.FontChar.java
com.miviclin.droidengine2d.graphics.text.Font.java
com.miviclin.droidengine2d.graphics.text.UndefinedCharacterException.java
com.miviclin.droidengine2d.graphics.texture.TextureAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureManager.java
com.miviclin.droidengine2d.graphics.texture.TexturePackerAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureRegion.java
com.miviclin.droidengine2d.graphics.texture.Texture.java
com.miviclin.droidengine2d.input.DefaultKeyEventProcessor.java
com.miviclin.droidengine2d.input.GameInputManager.java
com.miviclin.droidengine2d.input.GameStateInputManager.java
com.miviclin.droidengine2d.input.KeyEventInfo.java
com.miviclin.droidengine2d.input.KeyEventProcessor.java
com.miviclin.droidengine2d.input.KeyProcessor.java
com.miviclin.droidengine2d.input.MotionEventProcessor.java
com.miviclin.droidengine2d.input.TouchProcessor.java
com.miviclin.droidengine2d.input.sensor.AccelerometerValuesListener.java
com.miviclin.droidengine2d.input.sensor.Accelerometer.java
com.miviclin.droidengine2d.input.sensor.SensorUtilities.java
com.miviclin.droidengine2d.resources.AssetsLoader.java
com.miviclin.droidengine2d.util.ActivityUtilities.java
com.miviclin.droidengine2d.util.MutexLock.java
com.miviclin.droidengine2d.util.PrimitiveTypeSize.java
com.miviclin.droidengine2d.util.TransformUtilities.java
com.miviclin.droidengine2d.util.Transform.java
com.miviclin.droidengine2d.util.math.Matrix4.java
com.miviclin.droidengine2d.util.math.MatrixFix.java
com.miviclin.droidengine2d.util.math.Vector2.java
com.miviclin.droidengine2d.util.math.Vector3.java
com.miviclin.droidengine2d.util.time.TimeConstants.java
com.miviclin.droidengine2d.util.time.TimeCounter.java