На каждом андроид-телефоне имеются датчики — сенсоры. Одни регистрируют параметры окружающей среды — температуру, давление, освещенность. Другие определяют положение устройства в пространстве, или относительно магнитных полюсов.
Сенсоры делятся на аппаратные — акселерометр, гироскоп, датчик магнитного поля; и виртуальные, которые комбинируют или фильтруют данные с аппаратных датчиков.
Перечень и назначение основных сенсоров:
| Sensor | Type | Description | Common Uses |
|---|---|---|---|
TYPE_ACCELEROMETER |
Аппаратное обеспечение | Измеряет силу ускорения в м/с2, которое придается устройству на всех трех физических осях (x, y и z), в том числе силу тяжести. | Обнаружение движения (тряска, наклон и т.д.). |
TYPE_AMBIENT_TEMPERATURE |
Аппаратное обеспечение | Измеряет температуру в градусах Цельсия (° C). Смотрите примечание ниже. | Мониторинг температуры воздуха. |
TYPE_GRAVITY |
Программное или аппаратное обеспечение | Измеряет силу тяжести в м/с2, которая действует на устройство на всех трех физических осях (x, y, z). | Обнаружение движения (тряска, наклон и т.д.). |
TYPE_GYROSCOPE |
Аппаратное обеспечение | Измеряет скорость вращения устройства в rad/s вокруг каждой из трех физических осей (x, y и z). | Обнаружение вращения устройства |
TYPE_LIGHT |
Аппаратное обеспечение | Измеряет уровень окружающего света (освещения) в lx. | Управление яркостью экрана. |
TYPE_LINEAR_ACCELERATION |
Программное или аппаратное обеспечение | Измеряет силу ускорения в м/с2, которое придается устройству на всех трех физических осях (x, y и z), за исключением силы тяжести. | Определение ускорения вдоль одной оси. |
TYPE_MAGNETIC_FIELD |
Аппаратное обеспечение | Измеряет силу окружающего геомагнитного поля для всех трех физических осей (x, y, z) в μT. | Создание компаса. |
TYPE_ORIENTATION |
Программное обеспечение | Измеряет градус вращения устройства вокруг всех трех физических осей (x, y, z). По состоянию на уровне API 3 вы можете получить матрицы наклона и вращения для устройства с помощью датчика гравитации и датчика геомагнитного поля в сочетании с методом getRotationMatrix(). | Определение позиции устройства. |
TYPE_PRESSURE |
Аппаратное обеспечение | Измеряет давление окружающего воздуха в гПа или мбар. | Мониторинг изменения давления воздуха. |
TYPE_PROXIMITY |
Аппаратное обеспечение | Измеряет близость объекта в см относительно экрана устройства. Этот датчик обычно используется для определения телефона возле уха человека. | Позиция телефона во время разговора. |
TYPE_RELATIVE_HUMIDITY |
Аппаратное обеспечение | Измеряет относительную влажность в процентах (%). | Мониторинг точки росы, абсолютной и относительной влажности воздуха. |
TYPE_ROTATION_VECTOR |
Программное или аппаратное обеспечение | Измеряет ориентацию устройства, предоставляя три элемента вектора поворота устройства. | Обнаружения движения и вращения. |
TYPE_TEMPERATURE |
Аппаратное обеспечение | Измеряет температуру устройства в градусах Цельсия (° C). *Эта реализация датчика варьируется от устройств и этот датчик был заменен датчиком TYPE_AMBIENT_TEMPERATURE в API уровня 14 |
Мониторинг температуры. |
Для получения полного списка датчиков, имеющихся на вашем устройстве, можно использовать метод getSensorList класса SensorManager. Просто создайте приложение с таким кодом активити и запустите его:
import android.app.ListActivity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.List;
public class SensorsActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
List<Sensor> listSensor = sensorManager.getSensorList(Sensor.TYPE_ALL);
List<String> listSensorType = new ArrayList<>();
for (int i = 0; i < listSensor.size(); i++) {
listSensorType.add(listSensor.get(i).getName());
}
setListAdapter(new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, listSensorType));
getListView().setTextFilterEnabled(true);
}
}
Источники: http://goo.gl/rJSJ9M https://goo.gl/rYBsvW