Датчики

Значок 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 Compatibility Test Suite (CTS).
  • Если производитель интегрирует в устройство Android новый тип датчика, он может определить для него временный тип.
    • Эти типы не документированы, поэтому разработчики приложений вряд ли будут их использовать, поскольку либо не знают о них, либо знают, что они редко встречаются (только на некоторых устройствах определенного производителя).
    • Они не тестируются с помощью CTS.
    • Как только в Android будет определен официальный тип датчика для такого устройства, производители должны будут прекратить использовать временный тип и перейти на официальный. Это позволит большему количеству разработчиков приложений использовать датчик.
  • Список всех датчиков, установленных на устройстве, предоставляется реализацией HAL.
    • Датчиков одного типа может быть несколько. Например, два датчика расстояния или два акселерометра.
    • В подавляющем большинстве приложений запрашивается только один датчик определенного типа. Например, если приложение запрашивает акселерометр по умолчанию, оно получит первый акселерометр в списке.
    • Датчики часто определяются парами пробуждения и непробуждения. Оба датчика имеют один и тот же тип, но отличаются характеристикой пробуждения.

Датчики Android предоставляют данные в виде последовательности событий.

Каждое событие содержит:

  • дескриптор датчика, который сгенерировал событие;
  • временная метка, в которой указано, когда было обнаружено или зарегистрировано событие, на основе: SystemClock.elapsedRealtimeNanos()
  • и некоторые данные.

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

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

Для разработчиков

Для производителей

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