Датчики

Значок HAL для датчиков Android

Датчики 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()
  • и некоторые данные

Интерпретация сообщаемых данных зависит от типа датчика. Подробнее о том, какие данные предоставляются для каждого типа датчика, см. в определениях типов датчиков.

Существующая документация

Ориентировано на разработчиков

Ориентировано на производителей

  • Обзор
  • Уровень аппаратной абстракции (HAL)
  • Android CDD (документ определения совместимости)
    • /compatibility/android-cdd.pdf
    • См. разделы, касающиеся датчиков.
    • CDD является мягким, поэтому для обеспечения высокого качества датчиков недостаточно удовлетворить его требования.