
Датчики 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 определены в файле sensors.h под именами SENSOR_TYPE_…
- Подавляющее большинство датчиков имеют официальный тип датчика.
- Эти типы задокументированы в Android SDK.
- Поведение датчиков этих типов проверяется в наборе тестов на совместимость с Android (CTS).
- Если производитель интегрирует новый тип датчика в устройство Android, он может определить свой собственный временный тип для ссылки на него.
- Эти типы недокументированы, поэтому разработчики приложений вряд ли будут их использовать, либо потому что они о них не знают, либо знают, что они редко присутствуют (только на некоторых устройствах данного конкретного производителя).
- Они не тестируются CTS.
- Как только Android определит официальный тип датчика для этого типа датчика, производители должны прекратить использование своего собственного временного типа и использовать вместо него официальный тип. Таким образом, датчик будет использоваться большим количеством разработчиков приложений.
- Список всех датчиков, имеющихся на устройстве, предоставляется реализацией HAL.
- Датчиков одного типа может быть несколько. Например, два датчика приближения или два акселерометра.
- Подавляющее большинство приложений запрашивают только один датчик заданного типа. Например, приложение, запрашивающее акселерометр по умолчанию, получит первый акселерометр в списке.
- Датчики часто делятся на пары с функцией пробуждения и без нее , при этом оба датчика относятся к одному типу, но различаются по характеристикам пробуждения.
Датчики Android предоставляют данные в виде серии событий датчика.
Каждое событие содержит:
- ручка для датчика, который его сгенерировал
- временная метка, в которую событие было обнаружено или измерено, на основе
SystemClock.elapsedRealtimeNanos()
- и некоторые данные
Интерпретация сообщаемых данных зависит от типа датчика. См. определения типов датчиков для получения подробной информации о том, какие данные сообщаются для каждого типа датчика.
Существующая документация
Нацелено на разработчиков
- Обзор
- Ссылка на SDK
- Stack Overflow и обучающие сайты
- Поскольку документация по датчикам иногда отсутствовала, разработчикам приходилось обращаться к сайтам вопросов и ответов, таким как Stack Overflow, чтобы найти ответы.
- Существуют также некоторые обучающие сайты, но они не охватывают новейшие функции, такие как пакетная обработка, значительные векторы движения и вращения игры.
- Приведенные там ответы не всегда верны и указывают на те области, где требуется дополнительная документация.
Нацелено на производителей
- Обзор
- Эта страница «Датчики» и ее подстраницы.
- Уровень аппаратной абстракции (HAL)
- /platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h
- Также известен как «sensors.h»
- Источник истины. Первый документ, который будет обновлен при разработке новых функций.
- Android CDD (документ определения совместимости)
- /совместимость/android-cdd.pdf
- См. разделы, касающиеся датчиков.
- CDD является мягким, поэтому для обеспечения высокого качества датчиков недостаточно простого соблюдения требований CDD.