DemoGLSurfaceView.java :  » Graphics-3D-2D-OpenGL » dwarf-fw » se » ltu » android » demo » Android Open Source

Android Open Source » Graphics 3D 2D OpenGL » dwarf fw 
dwarf fw » se » ltu » android » demo » DemoGLSurfaceView.java
/* SVN FILE: $Id$ */
package se.ltu.android.demo;

import se.ltu.android.demo.sensors.SensorHandler;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.view.GestureDetector;
import android.view.MotionEvent;

/**
 * Our application specific implementation of a GLSurfaceView. It holds the renderer
 * and it listens to all input and sensor events spawned by the underlying OS.
 * @author ke Svedin <ake.svedin@gmail.com>
 * @version $Revision$
 * @lastmodified $Date$
 */
public class DemoGLSurfaceView extends GLSurfaceView implements SensorEventListener {
  private DemoRenderer mRenderer;
  private GestureDetector mGestureDetector;

  public DemoGLSurfaceView(DemoActivity context, boolean use_vbos) {
    super(context);

    mRenderer = new DemoRenderer();
    mRenderer.useVBOs(use_vbos);
    setRenderer(mRenderer);
    
    mGestureDetector = new GestureDetector(context, new DemoGestureDetector());
  }
  
  public DemoRenderer getRenderer() {
    return mRenderer;
  }

  @Override
  public boolean onTrackballEvent(final MotionEvent event) {
    switch(event.getAction()) {
      case MotionEvent.ACTION_DOWN:
        DemoGameThread.onTrackballClick();
        break;
      case MotionEvent.ACTION_MOVE:
        DemoGameThread.onTrackballMove(event.getX(), event.getY());
    }
    return true;
  };
  
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    return mGestureDetector.onTouchEvent(event);
  }

  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub
  }

  @Override
  public void onSensorChanged(final SensorEvent event) {
    switch (event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
      SensorHandler.handleAccData(event.timestamp, event.values);
      break;
    case Sensor.TYPE_MAGNETIC_FIELD:
      SensorHandler.handleMagData(event.timestamp, event.values);
      break;
    }
  }
  
  // See the class documentation for more types of supported gestures.
  private class DemoGestureDetector extends GestureDetector.SimpleOnGestureListener {

    /*
     * This method must return true, otherwise the tap events will not
     * be triggered.
     */
    @Override
      public boolean onDown(MotionEvent ev) {
          return true;
      }
    
    @Override
    public boolean onDoubleTap(MotionEvent e) {
      DemoGameThread.onDoubleTap(e.getX(), e.getY());
      return true;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
      DemoGameThread.onSingleTap(e.getX(), e.getY());
      return true;
    }
    
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.