aboutsummaryrefslogtreecommitdiff
path: root/cmactions/src/com/cyanogenmod/settings/device/OrientationSensor.java
diff options
context:
space:
mode:
Diffstat (limited to 'cmactions/src/com/cyanogenmod/settings/device/OrientationSensor.java')
-rw-r--r--cmactions/src/com/cyanogenmod/settings/device/OrientationSensor.java152
1 files changed, 0 insertions, 152 deletions
diff --git a/cmactions/src/com/cyanogenmod/settings/device/OrientationSensor.java b/cmactions/src/com/cyanogenmod/settings/device/OrientationSensor.java
deleted file mode 100644
index 4d32b79..0000000
--- a/cmactions/src/com/cyanogenmod/settings/device/OrientationSensor.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2015 The CyanogenMod Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.cyanogenmod.settings.device;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-public class OrientationSensor implements SensorEventListener {
-
- public static final int ORIENTATION_UNKNOWN = 0;
- public static final int ORIENTATION_FACE_DOWN = 1;
- public static final int ORIENTATION_FACE_UP = 2;
- public static final int ORIENTATION_VERTICAL = 3;
-
- private static final int ORIENTATION_DELAY = 60 * 1000;
- private static final int ORIENTATION_LATENCY = 0;
- private static final float MATH_PI_1_4 = 0.785398F;
- private static final float MATH_PI_3_4 = 2.35619F;
-
- private boolean mEnabled;
- private boolean mReady;
- private int mState;
- private float mGravity[];
- private float mMagnetic[];
- private OrientationListener mOrientationListener;
- private Sensor mAccelerometerSensor;
- private Sensor mMagneticFieldSensor;
- private SensorManager mSensorManager;
-
- public static interface OrientationListener {
- public abstract void onEvent();
- }
-
- public boolean isFaceDown() {
- return mReady && mState == ORIENTATION_FACE_DOWN;
- }
-
- public boolean isFaceUp() {
- return mReady && mState == ORIENTATION_FACE_UP;
- }
-
- public boolean isVertical() {
- return mReady && mState == ORIENTATION_VERTICAL;
- }
-
- public OrientationSensor(Context context, SensorManager sensorManager,
- OrientationListener orientationListener) {
- mEnabled = false;
- reset();
- mAccelerometerSensor = sensorManager.getDefaultSensor(
- Sensor.TYPE_ACCELEROMETER, false);
- mMagneticFieldSensor = sensorManager.getDefaultSensor(
- Sensor.TYPE_MAGNETIC_FIELD, false);
-
- mOrientationListener = orientationListener;
- mSensorManager = sensorManager;
- }
-
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- }
-
- public void onSensorChanged(SensorEvent event) {
- if (event.values.length == 0) return;
-
- switch (event.sensor.getType()) {
- case Sensor.TYPE_ACCELEROMETER:
- mGravity = event.values;
- break;
- case Sensor.TYPE_MAGNETIC_FIELD:
- mMagnetic = event.values;
- break;
- default:
- break;
- }
-
- if (mGravity != null && mMagnetic != null) {
- float[] rotationMatrix = new float[9];
- if (SensorManager.getRotationMatrix(rotationMatrix, new float[9],
- mGravity, mMagnetic))
- {
- float[] values = new float[3];
- mState = ORIENTATION_UNKNOWN;
- SensorManager.getOrientation(rotationMatrix, values);
-
- // Orientation is flat
- if (values[1] > -MATH_PI_1_4 && values[1] < MATH_PI_1_4) {
- // Device is face up
- if (values[2] > -MATH_PI_1_4 && values[2] < MATH_PI_1_4) {
- mState = ORIENTATION_FACE_UP;
- }
- // Device is face down
- else if (values[2] < -MATH_PI_3_4 || values[2] > MATH_PI_3_4) {
- mState = ORIENTATION_FACE_DOWN;
- }
- }
- // Orientation is vertical
- if (values[1] < -MATH_PI_1_4 || values[1] > MATH_PI_1_4 ||
- (values[2] > MATH_PI_1_4 && values[2] < MATH_PI_3_4) ||
- (values[2] > -MATH_PI_3_4 && values[2] < -MATH_PI_1_4)) {
- mState = ORIENTATION_VERTICAL;
- }
-
- // Launch an event
- mReady = true;
- mOrientationListener.onEvent();
- }
- }
- }
-
- public void enable() {
- if (!mEnabled && mAccelerometerSensor != null && mMagneticFieldSensor != null) {
- reset();
- mState = ORIENTATION_UNKNOWN;
- mSensorManager.registerListener(this, mAccelerometerSensor,
- ORIENTATION_DELAY, ORIENTATION_LATENCY);
- mSensorManager.registerListener(this, mMagneticFieldSensor,
- ORIENTATION_DELAY, ORIENTATION_LATENCY);
- mEnabled = true;
- }
- }
-
- public void reset() {
- mGravity = null;
- mMagnetic = null;
- mReady = false;
- }
-
- public void disable() {
- if (mEnabled && mAccelerometerSensor != null && mMagneticFieldSensor != null) {
- mSensorManager.unregisterListener(this,mAccelerometerSensor);
- mSensorManager.unregisterListener(this, mMagneticFieldSensor);
- mEnabled = false;
- }
- }
-}