Android Open Source - wiigee_android_test Motion Detect Filter






From Project

Back to project page wiigee_android_test.

License

The source code is released under:

GNU Lesser General Public License

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

/*
 * wiigee - accelerometerbased gesture recognition
 * Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
 * //from  w ww.  j a v a 2 s  .co  m
 * Developed at University of Oldenburg
 * Contact: wiigee@benjaminpoppinga.de
 *
 * This file is part of wiigee.
 *
 * wiigee is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

package org.wiigee.filter;

import org.wiigee.device.Device;

/**
 * This filter uses time to determine if the wiimote actually is in motion
 * or not. This filter only works together with the IdleStateFilter.
 *
 * @author Benjamin 'BePo' Poppinga
 */
public class MotionDetectFilter extends Filter {

  private int motionchangetime;
  private boolean nowinmotion;
  private long motionstartstamp;
  private Device device;
  
  /***
   * Detects wheather the wiimote receives acceleration or not and
   * raises an event, if the device starts or stops. This is actual a
   * null filter, not manipulating anything. But looks pretty good in
   * this datatype since it could be removed easily.
   * 
   * @param wiimote The Wiimote object which is controlled by the filter.
   */
  public MotionDetectFilter(Device device) {
    super();
    this.device=device;
    this.reset();
  }
  
  public void reset() {
    this.motionstartstamp=System.currentTimeMillis();
    this.nowinmotion=false;
    this.motionchangetime=190;
  }
  
    @Override
  public double[] filter(double[] vector) {
    
    if(this.nowinmotion &&
        (System.currentTimeMillis()-this.motionstartstamp)>=
          this.motionchangetime) {
      this.nowinmotion=false;
      this.device.fireMotionStopEvent();
    } // fi
    
    return filterAlgorithm(vector);
  }
  
  public double[] filterAlgorithm(double[] vector) {
    if(vector!=null) {
      this.motionstartstamp=System.currentTimeMillis();
      if(!this.nowinmotion) {
        this.nowinmotion=true;
        this.motionstartstamp=System.currentTimeMillis();
        this.device.fireMotionStartEvent();
      }
    }
    
    return vector;
  }
  
  /**
   * Defines the time the wiimote has to be in idle state before a new motion change
   * event appears. The default value 500ms should work well, only change it if you are sure
   * about what you're doing.
   * @param time Time in ms
   */
  public void setMotionChangeTime(int time) {
    this.motionchangetime=time;
  }
  
  public int getMotionChangeTime() {
    return this.motionchangetime;
  }

}




Java Source Code List

asus4.wiigeeandroid.Logger.java
asus4.wiigeeandroid.MainActivity.java
org.wiigee.control.AndroidWiigee.java
org.wiigee.control.Wiigee.java
org.wiigee.device.AndroidDevice.java
org.wiigee.device.Device.java
org.wiigee.event.AccelerationEvent.java
org.wiigee.event.AccelerationListener.java
org.wiigee.event.ActionStartEvent.java
org.wiigee.event.ActionStopEvent.java
org.wiigee.event.ButtonListener.java
org.wiigee.event.ButtonPressedEvent.java
org.wiigee.event.ButtonReleasedEvent.java
org.wiigee.event.GestureEvent.java
org.wiigee.event.GestureListener.java
org.wiigee.event.MotionStartEvent.java
org.wiigee.event.MotionStopEvent.java
org.wiigee.filter.DirectionalEquivalenceFilter.java
org.wiigee.filter.Filter.java
org.wiigee.filter.HighPassFilter.java
org.wiigee.filter.IdleStateFilter.java
org.wiigee.filter.LowPassFilter.java
org.wiigee.filter.MotionDetectFilter.java
org.wiigee.logic.Classifier.java
org.wiigee.logic.GestureModel.java
org.wiigee.logic.Gesture.java
org.wiigee.logic.HMM.java
org.wiigee.logic.PreciseHMM.java
org.wiigee.logic.ProcessingUnit.java
org.wiigee.logic.Quantizer.java
org.wiigee.logic.TriggeredProcessingUnit.java
org.wiigee.util.FileIO.java
org.wiigee.util.Log.java