Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Датчики
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Датчики Android предоставляют приложениям доступ к базовым физическим датчикам мобильного устройства. Это виртуальные устройства, предоставляющие данные, определяемые sensor.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)
- Android CDD (документ определения совместимости)
- /совместимость/android-cdd.pdf
- См. разделы, касающиеся датчиков.
- CDD является мягким, поэтому для обеспечения высокого качества датчиков недостаточно простого соблюдения требований CDD.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Sensors\n\nAndroid sensors give applications access to a mobile device's underlying\nphysical sensors. They are data-providing virtual devices defined by [sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h), the sensor Hardware Abstraction Layer (HAL).\n\nWhat are Android sensors?\n-------------------------\n\nAndroid sensors are virtual devices that provide data coming from a set of\nphysical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity,\npressure, light, proximity and heart rate sensors.\n\nNot included in the list of physical devices providing data are camera,\nfingerprint sensor, microphone, and touch screen. These devices have their own\nreporting mechanism; the separation is arbitrary, but in general, Android sensors\nprovide lower bandwidth data. For example, \"100hz x 3 channels\" for an\naccelerometer versus \"25hz x 8 MP x 3 channels\" for a camera or \"44kHz x 1\nchannel\" for a microphone.\n\nAndroid does not define how the different physical sensors are connected\nto the system on chip (SoC).\n\n- Often, sensor chips are connected to the SoC through a [sensor hub](/docs/core/interaction/sensors/sensor-stack#sensor_hub), allowing some low-power monitoring and processing of the data.\n- Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface (SPI) is used as the transport mechanism.\n- To reduce power consumption, some architectures are hierarchical, with some minimal processing being done in the application-specific integrated circuit (ASIC - like motion detection on the accelerometer chip), and more is done in a microcontroller (like step detection in a sensor hub).\n- It is up to the device manufacturer to choose an architecture based on accuracy, power, price and package-size characteristics. See [Sensor stack](/docs/core/interaction/sensors/sensor-stack) for more information.\n- Batching capabilities are an important consideration for power optimization. See [Batching](/docs/core/interaction/sensors/batching) for more information.\n\nEach Android sensor has a \"type\" representing how the sensor behaves and\nwhat data it provides.\n\n- The official Android [Sensor\n types](/docs/core/interaction/sensors/sensor-types) are defined in [sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h) under the names SENSOR_TYPE_...\n - The vast majority of sensors have an official sensor type.\n - Those types are documented in the Android SDK.\n - Behavior of sensors with those types are tested in the Android Compatibility Test Suite (CTS).\n- If a manufacturer integrates a new kind of sensor on an Android device, the manufacturer can define its own temporary type to refer to it.\n - Those types are undocumented, so application developers are unlikely to use them, either because they don't know about them, or know that they are rarely present (only on some devices from this specific manufacturer).\n - They are not tested by CTS.\n - Once Android defines an official sensor type for this kind of sensor, manufacturers must stop using their own temporary type and use the official type instead. This way, the sensor will be used by more application developers.\n- The list of all sensors present on the device is reported by the HAL implementation.\n - There can be several sensors of the same type. For example, two proximity sensors or two accelerometers.\n - The vast majority of applications request only a single sensor of a given type. For example, an application requesting the default accelerometer will get the first accelerometer in the list.\n - Sensors are often defined by [wake-up](/docs/core/interaction/sensors/suspend-mode#wake-up_sensors) and [non-wake-up](/docs/core/interaction/sensors/suspend-mode#non-wake-up_sensors) pairs, both sensors sharing the same type, but differing by their wake-up characteristic.\n\nAndroid sensors provide data as a series of sensor events.\n\nEach [event](/docs/core/interaction/sensors/hal-interface#sensors_event_t)\ncontains:\n\n- a handle to the sensor that generated it\n- the timestamp at which the event was detected or measured, based on [`SystemClock.elapsedRealtimeNanos()`](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtimeNanos())\n- and some data\n\nThe interpretation of the reported data depends on the sensor type. See\nthe [sensor type](/docs/core/interaction/sensors/sensor-types)\ndefinitions for details on what data is reported for each sensor type.\n\nExisting documentation\n----------------------\n\n### Targeted at developers\n\n- Overview\n - \u003chttps://developer.android.com/guide/topics/sensors/sensors_overview.html\u003e\n- SDK reference\n - \u003chttps://developer.android.com/reference/android/hardware/SensorManager\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/SensorEventListener\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/SensorEvent\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/Sensor\u003e\n- Stack Overflow and tutorial websites\n - Because sensors documentation was sometimes lacking, developers resorted to Q\\&A websites like Stack Overflow to find answers.\n - Some tutorial websites exist as well, but do not cover the latest features like batching, significant motion and game rotation vectors.\n - The answers over there are not always right, and show where more documentation is needed.\n\n### Targeted at manufacturers\n\n- Overview\n - This [Sensors](/docs/core/interaction/sensors) page and its sub-pages.\n- Hardware abstraction layer (HAL)\n - [/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h)\n - Also known as \"sensors.h\"\n - The source of truth. First document to be updated when new features are developed.\n- Android CDD (Compatibility Definition Document)\n - [/compatibility/android-cdd.pdf](/static/docs/compatibility/android-cdd.pdf)\n - See sections relative to sensors.\n - The CDD is lenient, so satisfying the CDD requirements is not enough to ensure high quality sensors."]]