package com.reindeercrafts.notificationpeek.utils;
import android.content.Context;
import android.content.SharedPreferences;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.preference.PreferenceManager;
import com.reindeercrafts.notificationpeek.settings.PreferenceKeys;
/**
* Helper class for checking if the device contains specific sensors:
* - Proximity sensor (or Light sensor).
* - Gyroscope sensor.
* <p/>
* Created by zhelu on 5/12/14.
*/
public class SensorHelper {
/**
* Sensor type to check: proxmity/light sensor.
*/
public static final int SENSOR_PROXIMITY_LIGHT = 1;
/**
* Sensor type to check: gyroscope sensor.
*/
public static final int SENSOR_GYRO = 2;
/**
* Check if the given sensor is presented in the device and/or the user choose to use it.
*
* @param context Context instance.
* @param sensor Sensor type, can be {@link SensorHelper#SENSOR_GYRO}
* or {@link SensorHelper#SENSOR_PROXIMITY_LIGHT}
* @param combinePreference Boolean value for whether we need to check the preference or not.
* @return
*/
public static boolean checkSensorStatus(Context context, int sensor,
boolean combinePreference) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SensorManager sensorManager =
(SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
switch (sensor) {
case SENSOR_PROXIMITY_LIGHT:
Sensor proxSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) !=
null ? sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) : sensorManager
.getDefaultSensor(Sensor.TYPE_LIGHT);
return proxSensor != null &&
(preferences.getBoolean(PreferenceKeys.PREF_PROX_LIGHT_SENSOR, true) ||
!combinePreference);
case SENSOR_GYRO:
Sensor gyroSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
return gyroSensor != null &&
(preferences.getBoolean(PreferenceKeys.PREF_GYRO_SENSOR, true) ||
!combinePreference);
default:
return false;
}
}
}