00001 00002 /* 00003 * Copyright 2006 Phidgets Inc. All rights reserved. 00004 */ 00005 00006 package com.phidgets; 00007 import java.util.Iterator; 00008 import java.util.LinkedList; 00009 import com.phidgets.event.*; 00020 public final class AccelerometerPhidget extends Phidget 00021 { 00022 public AccelerometerPhidget () throws PhidgetException 00023 { 00024 super (create ()); 00025 } 00026 private static native long create () throws PhidgetException; 00027 00032 public native int getAxisCount () throws PhidgetException; 00047 public native double getAcceleration (int index) throws PhidgetException; 00054 public native double getAccelerationMax (int index) throws PhidgetException; 00061 public native double getAccelerationMin (int index) throws PhidgetException; 00071 public native void setAccelerationChangeTrigger (int index, double newVal) throws PhidgetException; 00079 public native double getAccelerationChangeTrigger (int index) throws PhidgetException; 00080 00081 private final void enableDeviceSpecificEvents (boolean b) 00082 { 00083 enableAccelerationChangeEvents (b && accelerationChangeListeners.size () > 0); 00084 } 00093 public final void addAccelerationChangeListener (AccelerationChangeListener l) 00094 { 00095 synchronized (accelerationChangeListeners) 00096 { 00097 accelerationChangeListeners.add (l); 00098 enableAccelerationChangeEvents (true); 00099 }} private LinkedList accelerationChangeListeners = new LinkedList (); 00100 private long nativeAccelerationChangeHandler = 0; 00101 public final void removeAccelerationChangeListener (AccelerationChangeListener l) 00102 { 00103 synchronized (accelerationChangeListeners) 00104 { 00105 accelerationChangeListeners.remove (l); 00106 enableAccelerationChangeEvents (accelerationChangeListeners.size () > 0); 00107 }} private void fireAccelerationChange (AccelerationChangeEvent e) 00108 { 00109 synchronized (accelerationChangeListeners) 00110 { 00111 for (Iterator it = accelerationChangeListeners.iterator (); it.hasNext ();) 00112 ((AccelerationChangeListener) it.next ()).accelerationChanged (e); 00113 } 00114 } 00115 private native void enableAccelerationChangeEvents (boolean b); 00116 }