
Датчики Android предоставляют приложениям доступ к базовым физическим датчикам мобильного устройства. Это виртуальные устройства, предоставляющие данные, которые определяются файлом sensors.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/+/android17-release/include/hardware/sensors.h
- Также известен как “sensors.h”
- Источник достоверной информации. Первый документ, который обновляется при разработке новых функций.
- Документ с описанием совместимости Android (Android CDD)
- /compatibility/android-cdd.pdf
- См. разделы, касающиеся датчиков.
- CDD — это мягкий стандарт, поэтому выполнения требований CDD недостаточно для обеспечения высокого качества датчиков.