Датчики

Значок 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 (Android CDD)
    • /compatibility/android-cdd.pdf
    • См. разделы, касающиеся датчиков.
    • CDD — это мягкий стандарт, поэтому выполнения требований CDD недостаточно для обеспечения высокого качества датчиков.