
Сенсоры Android предоставляют приложениям доступ к базовым физическим сенсорам мобильного устройства. Они представляют собой виртуальные устройства, предоставляющие данные и определяемые с помощью Sensor.h , уровня аппаратной абстракции датчиков (HAL).
Что такое датчики Android?
Датчики Android — это виртуальные устройства, которые предоставляют данные, поступающие от набора физических датчиков: акселерометров, гироскопов, магнитометров, барометров, датчиков влажности, давления, освещенности, приближения и частоты сердечных сокращений.
В список физических устройств, предоставляющих данные, не включены камера, датчик отпечатков пальцев, микрофон и сенсорный экран. Эти устройства имеют собственный механизм отчетности; разделение произвольное, но в целом датчики Android предоставляют данные с более низкой пропускной способностью. Например, «100 Гц x 3 канала» для акселерометра по сравнению с «25 Гц x 8 МП x 3 канала» для камеры или «44 кГц x 1 канал» для микрофона.
Android не определяет, как различные физические датчики подключаются к системе на кристалле (SoC).
- Часто сенсорные чипы подключаются к SoC через сенсорный концентратор , что позволяет осуществлять мониторинг и обработку данных с низким энергопотреблением.
 - Часто в качестве транспортного механизма используется межинтегральная схема (I2C) или последовательный периферийный интерфейс (SPI).
 - Чтобы снизить энергопотребление, некоторые архитектуры являются иерархическими, при этом некоторая минимальная обработка выполняется в специализированной интегральной схеме (ASIC — например, обнаружение движения на микросхеме акселерометра), а дополнительная обработка выполняется в микроконтроллере (например, обнаружение шагов в концентраторе датчиков). ).
 - Производитель устройства должен выбрать архитектуру на основе характеристик точности, мощности, цены и размера корпуса. Дополнительные сведения см. в разделе Стек датчиков .
 - Возможности пакетной обработки являются важным фактором для оптимизации энергопотребления. Дополнительную информацию см. в разделе Пакетная обработка .
 
У каждого датчика Android есть «тип», представляющий, как датчик ведет себя и какие данные он предоставляет.
-  Официальные типы датчиков Android определены в Sensor.h под именами SENSOR_TYPE_…
- Подавляющее большинство датчиков имеют официальный тип датчика.
 - Эти типы задокументированы в Android SDK.
 - Поведение датчиков с этими типами тестируется в наборе тестов на совместимость с Android (CTS).
 
 -  Если производитель интегрирует датчик нового типа в устройство Android, производитель может определить свой собственный временный тип для ссылки на него.
- Эти типы недокументированы, поэтому разработчики приложений вряд ли будут их использовать, либо потому, что они не знают о них, либо знают, что они редко присутствуют (только на некоторых устройствах этого конкретного производителя).
 - Они не тестируются CTS.
 - Как только Android определит официальный тип датчика для этого типа датчика, производители должны прекратить использовать свой собственный временный тип и вместо этого использовать официальный тип. Таким образом, датчик будет использоваться большим количеством разработчиков приложений.
 
 -  Список всех датчиков, присутствующих на устройстве, сообщает реализация HAL.
- Однотипных датчиков может быть несколько. Например, два датчика приближения или два акселерометра.
 - Подавляющее большинство приложений запрашивают только один датчик данного типа. Например, приложение, запрашивающее акселерометр по умолчанию, получит первый акселерометр в списке.
 - Датчики часто определяются парами пробуждения и неактивации, причем оба датчика имеют один и тот же тип, но отличаются своей характеристикой пробуждения.
 
 
Датчики Android предоставляют данные в виде серии событий датчика.
Каждое событие содержит:
- дескриптор датчика, который его сгенерировал
 -  отметка времени, когда событие было обнаружено или измерено, на основе 
SystemClock.elapsedRealtimeNanos() - и некоторые данные
 
Интерпретация сообщаемых данных зависит от типа датчика. Подробную информацию о том, какие данные сообщаются для каждого типа датчика , см. в определениях типов датчиков.
Существующая документация
Ориентирован на разработчиков
- Обзор
 - Справка по SDK
 -  Stack Overflow и учебные сайты
- Поскольку документации датчиков иногда не хватало, разработчики прибегали к веб-сайтам вопросов и ответов, таким как Stack Overflow, чтобы найти ответы.
 - Также существуют некоторые обучающие веб-сайты, но они не охватывают новейшие функции, такие как пакетная обработка, значительное движение и векторы вращения игры.
 - Ответы там не всегда правильные и показывают, где требуется дополнительная документация.
 
 
Ориентирован на производителей
-  Обзор
- Эта страница датчиков и ее подстраницы.
 
 -  Уровень аппаратной абстракции (HAL)
- /platform/hardware/libhardware/+/master/include/hardware/sensors.h
 - Также известен как «sensors.h».
 - Источник истины. Первый документ, который будет обновляться при разработке новых функций.
 
 -  Android CDD (документ определения совместимости)
- https://source.android.com/compatibility/android-cdd.pdf
 - См. разделы, посвященные датчикам.
 - CDD является мягким, поэтому выполнения требований CDD недостаточно для обеспечения высокого качества датчиков.