@@ -71,7 +71,7 @@ public static String getHardwareSensors() {
71
71
/**
72
72
* Get Access to 3 Axis Hardware Sensors Accelerometer, Orientation and Magnetic Field Sensors
73
73
*/
74
- public class generic3AxisSensor implements SensorEventListener {
74
+ public static class generic3AxisSensor implements SensorEventListener {
75
75
private final SensorManager sSensorManager ;
76
76
private final Sensor sSensor ;
77
77
private final int sSensorType ;
@@ -114,22 +114,47 @@ public float[] readSensor() {
114
114
}
115
115
}
116
116
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 ;
120
120
121
121
/**
122
122
* functions for backward compatibility reasons
123
123
*/
124
124
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
+ }
133
158
134
159
static public DisplayMetrics metrics = new DisplayMetrics ();
135
160
0 commit comments