Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Czujniki
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Czujniki Androida zapewniają aplikacjom dostęp do podstawowych czujników fizycznych urządzenia mobilnego. Są to wirtualne urządzenia dostarczające dane zdefiniowane przez sensors.h, czyli warstwę abstrakcji sprzętowej (HAL) czujnika.
Czym są czujniki Androida?
Czujniki Androida to wirtualne urządzenia, które dostarczają danych z zestawu czujników fizycznych: akcelerometrów, żyroskopów, magnetometrów, barometrów, czujników wilgotności, ciśnienia, światła, zbliżeniowych i tętności.
Na liście urządzeń fizycznych przesyłających dane nie ma kamery, czujnika odcisków palców, mikrofonu ani ekranu dotykowego. Te urządzenia mają własny mechanizm raportowania; podział jest arbitralny, ale ogólnie czujniki Androida zapewniają dane o mniejszej przepustowości. Na przykład „100 Hz x 3 kanały” w przypadku akcelerometru w porównaniu z „25 Hz x 8 MP x 3 kanały” w przypadku kamery lub „44 kHz x 1 kanał” w przypadku mikrofonu.
Android nie definiuje sposobu, w jaki różne czujniki fizyczne są połączone z systemem na chipie (SoC).
- Czujniki są często połączone z systemem SoC za pomocą modułu czujników, co umożliwia monitorowanie i przetwarzanie danych przy niskim poborze mocy.
- Często jako mechanizm transportu używany jest interfejs I2C lub SPI.
- Aby zmniejszyć zużycie energii, niektóre architektury są hierarchiczne, a niektóre minimalne operacje są wykonywane w specjalistycznym układzie scalonym (ASIC, np. wykrywanie ruchu na układzie akcelerometru), a pozostałe w mikrokontrolerze (np. wykrywanie kroków w modułu czujników).
- Producent urządzenia sam wybiera architekturę na podstawie dokładności, mocy, ceny i rozmiaru opakowania. Więcej informacji znajdziesz w sekcji Moduł czujnika.
- Możliwości grupowania są ważne w przypadku zaawansowanej optymalizacji. Więcej informacji znajdziesz w sekcji Przetwarzanie zbiorcze.
Każdy czujnik Androida ma „typ”, który określa jego działanie i dostępne dane.
- Oficjalne typy czujników w Androidzie są zdefiniowane w pliku sensors.h pod nazwami SENSOR_TYPE_…
- Większość czujników ma oficjalny typ.
- Te typy są opisane w pakiecie Android SDK.
- Działanie czujników tych typów jest testowane w pakiecie Compatibility Test Suite (CTS) na Androida.
- Jeśli producent zintegruje nowy rodzaj czujnika z urządzeniem z Androidem, może zdefiniować własny tymczasowy typ, aby się do niego odwoływać.
- Te typy nie są udokumentowane, więc deweloperzy aplikacji prawdopodobnie ich nie używają, ponieważ albo nie wiedzą o ich istnieniu, albo wiedzą, że występują rzadko (tylko na niektórych urządzeniach danego producenta).
- Nie są one testowane przez CTS.
- Gdy Android określi oficjalny typ tego czujnika, producenci muszą przestać używać własnego tymczasowego typu i zamiast niego używać oficjalnego typu. Dzięki temu więcej deweloperów aplikacji będzie używać tego czujnika.
- Implementacja HAL udostępnia listę wszystkich czujników obecnych na urządzeniu.
- Może być kilka czujników tego samego typu. Na przykład 2 czujniki zbliżeniowe lub 2 akcelerometry.
- Większość aplikacji wymaga tylko jednego czujnika danego typu. Na przykład aplikacja żądająca domyślnego akcelerometru otrzyma pierwszy akcelerometr na liście.
- Sensory są często definiowane przez pary budzenia i niebudzenia. Oba czujniki mają ten sam typ, ale różnią się charakterystyką budzenia.
Czujniki Androida dostarczają dane w postaci serii zdarzeń czujnika.
Każde zdarzenie
zawiera:
- uchwyt do czujnika, który go wygenerował;
- sygnatura czasowa, w której zdarzenie zostało wykryte lub zmierzone na podstawie
SystemClock.elapsedRealtimeNanos()
- i niektóre dane
Interpretacja zgłoszonych danych zależy od typu czujnika. Szczegółowe informacje o danych raportowanych dla poszczególnych typów czujników znajdziesz w definicjach typu czujnika.
Istniejąca dokumentacja
Informacje kierowane do deweloperów
- Omówienie
- Dokumentacja pakietu SDK
- Stack Overflow i strony z samouczkami
- Ponieważ dokumentacja czujników była czasami niewystarczająca, deweloperzy korzystali z witryn Q&A, takich jak Stack Overflow, aby znaleźć odpowiedzi.
- Istnieją też strony z samouczkami, ale nie zawierają one informacji o najnowszych funkcjach, takich jak grupowanie, znaczące ruchy i wektory obrotu gry.
- Odpowiedzi tam nie zawsze są prawidłowe i pokazują, gdzie potrzebna jest dodatkowa dokumentacja.
Informacje kierowane do producentów
- Omówienie
- Warstwa abstrakcji sprzętowej (HAL)
- Dokument zdefiniowany przez użytkownika (CDD) dotyczący zgodności z Androidem.
- /compatibility/android-cdd.pdf
- Zapoznaj się z sekcjami dotyczącymi czujników.
- Wymagania CDD są łagodne, więc spełnienie wymagań CDD nie wystarczy, aby zapewnić wysoką jakość czujników.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 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."]]