01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
@Override
30.
protected
void
onResume() {
31.
mgr.registerListener(
this
, accelerometer, SensorManager.SENSOR_DELAY_UI);
32.
super
.onResume();
33.
}
34.
35.
@Override
36.
protected
void
onPause() {
37.
mgr.unregisterListener(
this
, accelerometer);
38.
super
.onPause();
39.
}
40.
41.
public
void
onAccuracyChanged(Sensor sensor,
int
accuracy) {
42.
}
43.
44.
public
void
onSensorChanged(SensorEvent event) {
45.
for
(
int
i=
0
; i<
3
; i++) {
46.
gravity [i] = (
float
) (
0.1
* event.values[i] +
0.9
* gravity[i]);
47.
motion[i] = event.values[i] - gravity[i];
48.
}
49.
ratio = gravity[
1
]/SensorManager.GRAVITY_EARTH;
50.
if
(ratio >
1.0
) ratio =
1.0
;
51.
if
(ratio < -
1.0
) ratio = -
1.0
;
52.
mAngle = Math.toDegrees(Math.acos(ratio));
53.
if
(gravity[
2
] <
0
) {
54.
mAngle = -mAngle;
55.
}
56.
if
(counter++ %
10
==
0
) {
57.
String msg = String.format(
58.
"Raw values\nX: %8.4f\nY: %8.4f\nZ: %8.4f\n"
+
59.
"Gravity\nX: %8.4f\nY: %8.4f\nZ: %8.4f\n"
+
60.
"Motion\nX: %8.4f\nY: %8.4f\nZ: %8.4f\nAngle: %8.1f"
,
61.
event.values[
0
], event.values[
1
], event.values[
2
],
62.
gravity[
0
], gravity[
1
], gravity[
2
],
63.
motion[
0
], motion[
1
], motion[
2
],
64.
mAngle);
65.
text.setText(msg);
66.
text.invalidate();
67.
counter=
1
;
68.
}
69.
}
70.
}