На каждом андроид-телефоне имеются датчики – сенсоры. Одни регистрируют параметры окружающей среды – температуру, давление, освещенность. Другие определяют положение устройства в пространстве, или относительно магнитных полюсов.
Сенсоры делятся на аппаратные – акселерометр, гироскоп, датчик магнитного поля; и виртуальные, которые комбинируют или фильтруют данные с аппаратных датчиков.
Перечень и назначение основных сенсоров:
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