Skip to content

Commit 45d007c

Browse files
committed
Added Orientation Sensor and Magnetic Field Sensor
1 parent a674b41 commit 45d007c

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

src/src/org/renpy/android/Hardware.java

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,88 @@ public static float[] accelerometerReading() {
8181
}
8282
}
8383

84+
static SensorEvent lastOrientationEvent = null;
85+
86+
static class OrientationListener implements SensorEventListener {
87+
public void onSensorChanged(SensorEvent ev) {
88+
lastOrientationEvent = ev;
89+
}
90+
91+
public void onAccuracyChanged(Sensor sensor , int accuracy) {
92+
}
93+
}
94+
95+
static OrientationListener orientationListener = new OrientationListener();
96+
97+
/**
98+
* Enable or Disable the OrientationSensor.
99+
*/
100+
public static void orientationSensorEnable(boolean enable) {
101+
SensorManager sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
102+
Sensor orientationSensor = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);
103+
104+
if (orientationSensor == null) {
105+
return;
106+
}
107+
108+
if (enable) {
109+
sm.registerListener(orientationListener, orientationSensor, SensorManager.SENSOR_DELAY_NORMAL);
110+
} else {
111+
sm.unregisterListener(orientationListener, orientationSensor);
112+
}
113+
}
114+
115+
public static float[] orientationSensorReading() {
116+
if (lastOrientationEvent != null) {
117+
return lastOrientationEvent.values;
118+
} else {
119+
float rv[] = { 0f, 0f, 0f };
120+
return rv;
121+
}
122+
}
123+
124+
static SensorEvent lastMagneticFieldEvent = null;
125+
126+
static class MagneticFieldListener implements SensorEventListener {
127+
public void onSensorChanged(SensorEvent ev) {
128+
lastMagneticFieldEvent = ev;
129+
}
130+
131+
public void onAccuracyChanged(Sensor sensor , int accuracy) {
132+
}
133+
}
134+
135+
static MagneticFieldListener magneticFieldListener = new MagneticFieldListener();
136+
137+
/**
138+
* Enable or Disable the MagneticFieldSensor.
139+
*/
140+
public static void magneticFieldSensorEnable(boolean enable) {
141+
SensorManager sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
142+
Sensor magneticFieldSensor = sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
143+
144+
if (magneticFieldSensor == null) {
145+
return;
146+
}
147+
148+
if (enable) {
149+
sm.registerListener(magneticFieldListener, magneticFieldSensor, SensorManager.SENSOR_DELAY_NORMAL);
150+
} else {
151+
sm.unregisterListener(magneticFieldListener, magneticFieldSensor);
152+
}
153+
}
154+
155+
156+
public static float[] magneticFieldSensorReading() {
157+
if (lastMagneticFieldEvent != null) {
158+
return lastMagneticFieldEvent.values;
159+
} else {
160+
float rv[] = { 0f, 0f, 0f };
161+
return rv;
162+
}
163+
}
164+
165+
84166
static DisplayMetrics metrics = new DisplayMetrics();
85167

86168
/**

0 commit comments

Comments
 (0)