![Значок HAL датчиков Android](https://source.android.google.cn/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=8&hl=ru)
Датчики 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/+/main/include/hardware/sensors.h
- Также известен как «sensors.h»
- Источник истины. Первый документ, который будет обновляться при разработке новых функций.
- Android CDD (документ определения совместимости)
- /совместимость/android-cdd.pdf
- См. разделы, посвященные датчикам.
- CDD является мягким, поэтому удовлетворения требований CDD недостаточно для обеспечения высокого качества датчиков.