From 217ae04e8b021e6fa683edad5a8330c4c83772e7 Mon Sep 17 00:00:00 2001 From: bepo23 Date: Thu, 25 Jun 2009 13:14:34 +0000 Subject: [PATCH] Extended Wii Motion Plus Support: There now exists a OrientationEvent to obtain the Wiimotes relative orientation to the starting point. During error aggregation it's getting unprecise and needs continuous resets. The demo-gui now has a panel to orientate a 3D cube. If no WM+ is attached, the panel is there, too. This would be addressed if the Wii Motion Plus detection works well and if I've integrated support for other extensions, like Nunchuck (I finally got one for testing!). Feel free to donate me some money, that I can get some more extensions integrated to become wiigee the ultimate Wii library with integrated gesture recognition for Java. There also is an improvement for the Hidden Markov Model in the works. Thanks Marc for providing this helpful information! :) git-svn-id: svn://svn.code.sf.net/p/wiigee/code/trunk@94 c7eff9ee-dd40-0410-8832-91a4d88773cf --- src/org/wiigee/control/Wiigee.java | 6 +-- src/org/wiigee/device/Device.java | 30 ++++++++---- src/org/wiigee/event/AccelerationEvent.java | 2 +- .../wiigee/event/AccelerationListener.java | 2 +- src/org/wiigee/event/ActionStartEvent.java | 10 +--- src/org/wiigee/event/ActionStopEvent.java | 11 +---- src/org/wiigee/event/ButtonListener.java | 2 +- src/org/wiigee/event/ButtonPressedEvent.java | 4 +- src/org/wiigee/event/ButtonReleasedEvent.java | 6 +-- src/org/wiigee/event/GestureEvent.java | 4 +- src/org/wiigee/event/GestureListener.java | 14 +----- src/org/wiigee/event/MotionStartEvent.java | 4 +- src/org/wiigee/event/MotionStopEvent.java | 4 +- src/org/wiigee/event/StateEvent.java | 4 +- src/org/wiigee/event/StateListener.java | 49 +++++++++++++++++++ .../filter/DirectionalEquivalenceFilter.java | 4 +- src/org/wiigee/filter/Filter.java | 4 +- src/org/wiigee/filter/HighPassFilter.java | 2 +- src/org/wiigee/filter/IdleStateFilter.java | 4 +- src/org/wiigee/filter/LowPassFilter.java | 2 +- src/org/wiigee/filter/MotionDetectFilter.java | 4 +- src/org/wiigee/logic/Classifier.java | 4 +- src/org/wiigee/logic/Gesture.java | 4 +- src/org/wiigee/logic/GestureModel.java | 4 +- src/org/wiigee/logic/HMM.java | 4 +- src/org/wiigee/logic/PreciseHMM.java | 4 +- src/org/wiigee/logic/ProcessingUnit.java | 27 +++++++--- src/org/wiigee/logic/Quantizer.java | 4 +- .../wiigee/logic/TriggeredProcessingUnit.java | 2 +- src/org/wiigee/util/FileIO.java | 4 +- 30 files changed, 138 insertions(+), 91 deletions(-) create mode 100755 src/org/wiigee/event/StateListener.java diff --git a/src/org/wiigee/control/Wiigee.java b/src/org/wiigee/control/Wiigee.java index 2523cde..8013c94 100644 --- a/src/org/wiigee/control/Wiigee.java +++ b/src/org/wiigee/control/Wiigee.java @@ -3,7 +3,7 @@ * Copyright (C) 2007, 2008, 2009 Benjamin Poppinga * * Developed at University of Oldenburg - * Contact: benjamin.poppinga@informatik.uni-oldenburg.de + * Contact: wiigee@benjaminpoppinga.de * * This file is part of wiigee. * @@ -32,8 +32,8 @@ import org.wiigee.util.Log; */ public class Wiigee { - protected static String version = "1.5 alpha"; - protected static String releasedate = "20090617"; + protected static String version = "1.5.1 alpha"; + protected static String releasedate = "20090619"; protected Wiigee() { Log.write("This is wiigee version "+version+" ("+releasedate+")"); diff --git a/src/org/wiigee/device/Device.java b/src/org/wiigee/device/Device.java index 79d2493..4152301 100644 --- a/src/org/wiigee/device/Device.java +++ b/src/org/wiigee/device/Device.java @@ -3,7 +3,7 @@ * Copyright (C) 2007, 2008, 2009 Benjamin Poppinga * * Developed at University of Oldenburg - * Contact: benjamin.poppinga@informatik.uni-oldenburg.de + * Contact: wiigee@benjaminpoppinga.de * * This file is part of wiigee. * @@ -52,10 +52,12 @@ public class Device { protected Vector buttonlistener = new Vector(); protected ProcessingUnit processingunit = new TriggeredProcessingUnit(); - public Device() { - this.addFilter(new IdleStateFilter()); - this.addFilter(new MotionDetectFilter(this)); - this.addFilter(new DirectionalEquivalenceFilter()); + public Device(boolean autofiltering) { + if(autofiltering) { + this.addAccelerationFilter(new IdleStateFilter()); + this.addAccelerationFilter(new MotionDetectFilter(this)); + this.addAccelerationFilter(new DirectionalEquivalenceFilter()); + } this.addAccelerationListener(this.processingunit); this.addButtonListener(this.processingunit); } @@ -64,7 +66,7 @@ public class Device { * Adds a Filter for processing the acceleration values. * @param filter The Filter instance. */ - public void addFilter(Filter filter) { + public void addAccelerationFilter(Filter filter) { this.accfilters.add(filter); } @@ -72,7 +74,7 @@ public class Device { * Resets all the accfilters, which are resetable. * Sometimes they have to be resettet if a new gesture starts. */ - public void resetFilters() { + public void resetAccelerationFilters() { for(int i=0; i listen = new Vector(); + private Vector gesturelistener = new Vector(); + private Vector statelistener = new Vector(); public ProcessingUnit() { @@ -28,26 +30,35 @@ public abstract class ProcessingUnit implements AccelerationListener, ButtonList } /** - * Add an GestureListener to receive Gesture/StateEvents. + * Add an GestureListener to receive GestureEvents. * * @param g - * Class which implements GestureListener interface + * Class which implements GestureListener interface. */ public void addGestureListener(GestureListener g) { - this.listen.add(g); + this.gesturelistener.add(g); } + + /** + * Adds a StateListener to receive StateEvents. + * + * @param s Class which implements the StateListener interface. + */ + public void addStateListener(StateListener s) { + this.statelistener.add(s); + } protected void fireGestureEvent(int id, double probability) { GestureEvent w = new GestureEvent(this, id, probability); - for(int i=0; i