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