@@ -71,7 +71,7 @@ public static String getHardwareSensors() {
7171 /**
7272 * Get Access to 3 Axis Hardware Sensors Accelerometer, Orientation and Magnetic Field Sensors
7373 */
74- public class generic3AxisSensor implements SensorEventListener {
74+ public static class generic3AxisSensor implements SensorEventListener {
7575 private final SensorManager sSensorManager ;
7676 private final Sensor sSensor ;
7777 private final int sSensorType ;
@@ -114,22 +114,47 @@ public float[] readSensor() {
114114 }
115115 }
116116
117- public generic3AxisSensor accelerometerSensor = new generic3AxisSensor ( Sensor . TYPE_ACCELEROMETER ) ;
118- public generic3AxisSensor orientationSensor = new generic3AxisSensor ( Sensor . TYPE_ORIENTATION ) ;
119- public generic3AxisSensor magneticFieldSensor = new generic3AxisSensor ( Sensor . TYPE_MAGNETIC_FIELD ) ;
117+ public static generic3AxisSensor accelerometerSensor = null ;
118+ public static generic3AxisSensor orientationSensor = null ;
119+ public static generic3AxisSensor magneticFieldSensor = null ;
120120
121121 /**
122122 * functions for backward compatibility reasons
123123 */
124124
125- public void accelerometerEnable (boolean enable ) { accelerometerSensor .changeStatus (enable ); }
126- public float [] accelerometerReading () { return (float []) accelerometerSensor .readSensor (); }
127- public void orientationSensorEnable (boolean enable ) { orientationSensor .changeStatus (enable ); }
128- public float [] orientationSensorReading () { return (float []) orientationSensor .readSensor (); }
129- public void magneticFieldSensorEnable (boolean enable ) { magneticFieldSensor .changeStatus (enable ); }
130- public float [] magneticFieldSensorReading () { return (float []) magneticFieldSensor .readSensor (); }
131-
132-
125+ public static void accelerometerEnable (boolean enable ) {
126+ if ( accelerometerSensor == null )
127+ accelerometerSensor = new generic3AxisSensor (Sensor .TYPE_ACCELEROMETER );
128+ accelerometerSensor .changeStatus (enable );
129+ }
130+ public static float [] accelerometerReading () {
131+ float rv [] = { 0f , 0f , 0f };
132+ if ( accelerometerSensor == null )
133+ return rv ;
134+ return (float []) accelerometerSensor .readSensor ();
135+ }
136+ public static void orientationSensorEnable (boolean enable ) {
137+ if ( orientationSensor == null )
138+ orientationSensor = new generic3AxisSensor (Sensor .TYPE_ORIENTATION );
139+ orientationSensor .changeStatus (enable );
140+ }
141+ public static float [] orientationSensorReading () {
142+ float rv [] = { 0f , 0f , 0f };
143+ if ( orientationSensor == null )
144+ return rv ;
145+ return (float []) orientationSensor .readSensor ();
146+ }
147+ public static void magneticFieldSensorEnable (boolean enable ) {
148+ if ( magneticFieldSensor == null )
149+ magneticFieldSensor = new generic3AxisSensor (Sensor .TYPE_MAGNETIC_FIELD );
150+ magneticFieldSensor .changeStatus (enable );
151+ }
152+ public static float [] magneticFieldSensorReading () {
153+ float rv [] = { 0f , 0f , 0f };
154+ if ( magneticFieldSensor == null )
155+ return rv ;
156+ return (float []) magneticFieldSensor .readSensor ();
157+ }
133158
134159 static public DisplayMetrics metrics = new DisplayMetrics ();
135160
0 commit comments