A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Sensori
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
I sensori Android consentono alle applicazioni di accedere ai sensori fisici di base di un dispositivo mobile. Si tratta di dispositivi virtuali che forniscono dati definiti da sensors.h, il livello di astrizione hardware (HAL) del sensore.
Che cosa sono i sensori Android?
I sensori Android sono dispositivi virtuali che forniscono dati provenienti da un insieme di sensori fisici: accelerometri, giroscopio, magnetometri, barometro, umidità, pressione, luce, prossimità e battito cardiaco.
Non sono inclusi nell'elenco dei dispositivi fisici che forniscono dati la fotocamera, il sensore di impronte digitali, il microfono e il touchscreen. Questi dispositivi hanno un proprio meccanismo di generazione di report. La separazione è arbitraria, ma in generale i sensori Android forniscono dati con una larghezza di banda inferiore. Ad esempio, "100 Hz x 3 canali" per un accelerometro rispetto a "25 Hz x 8 MP x 3 canali" per una fotocamera o "44 kHz x 1 canale" per un microfono.
Android non definisce in che modo i diversi sensori fisici sono collegati al SoC (System on Chip).
- Spesso i chip dei sensori sono collegati all'SoC tramite un hub di sensori, il che consente di monitorare ed elaborare i dati a basso consumo energetico.
- Spesso, come meccanismo di trasporto viene utilizzato Inter-Integrated Circuit (I2C) o Serial Peripheral Interface (SPI).
- Per ridurre il consumo energetico, alcune architetture sono gerarchiche, con
un'elaborazione minima eseguita nel circuito integrato per applicazioni specifiche (ASIC, ad esempio il rilevamento dei movimenti sul chip dell'accelerometro) e un'elaborazione più approfondita
in un microcontrollore (ad esempio il rilevamento dei passi in un hub di sensori).
- Spetta al produttore del dispositivo scegliere un'architettura in base alle caratteristiche di precisione, potenza, prezzo e dimensioni del pacchetto. Per ulteriori informazioni, consulta la sezione Sensor stack.
- Le funzionalità di raggruppamento sono un aspetto importante per l'ottimizzazione della potenza. Per ulteriori informazioni, consulta la sezione Raggruppamento.
Ogni sensore Android ha un "tipo" che rappresenta il suo comportamento e i dati che fornisce.
- I tipi di sensore ufficiali di Android sono definiti in sensors.h con i nomi SENSOR_TYPE_…
- La maggior parte dei sensori ha un tipo ufficiale.
- Questi tipi sono documentati nell'SDK Android.
- Il comportamento dei sensori di questi tipi viene testato nella suite di test di compatibilità Android (CTS).
- Se un produttore integra un nuovo tipo di sensore su un dispositivo Android, può definire il proprio tipo temporaneo a cui fare riferimento.
- Questi tipi non sono documentati, pertanto è improbabile che gli sviluppatori di applicazioni li utilizzino, perché non li conoscono o sanno che sono presenti raramente (solo su alcuni dispositivi di questo produttore specifico).
- Non vengono testate da CTS.
- Una volta che Android definisce un tipo di sensore ufficiale per questo tipo di sensore,
i produttori devono smettere di utilizzare il proprio tipo temporaneo e utilizzare invece il
tipo ufficiale. In questo modo, il sensore verrà utilizzato da più sviluppatori di applicazioni.
- L'elenco di tutti i sensori presenti sul dispositivo viene riportato dall'implementazione HAL.
- Possono essere presenti più sensori dello stesso tipo. Ad esempio, due
sensori di prossimità o due accelerometri.
- La maggior parte delle applicazioni richiede un solo sensore di un determinato tipo. Ad esempio, un'applicazione che richiede l'accelerometro predefinito riceverà il primo nell'elenco.
- I sensori sono spesso definiti da coppie di risveglio e
non risveglio
che condividono lo stesso tipo, ma differiscono per la loro
caratteristica di risveglio.
I sensori Android forniscono i dati sotto forma di una serie di eventi del sensore.
Ogni evento
contiene:
L'interpretazione dei dati registrati dipende dal tipo di sensore. Consulta
le definizioni del tipo di sensore
per informazioni dettagliate sui dati registrati per ciascun tipo di sensore.
Documentazione esistente
Diretti agli sviluppatori
- Panoramica
- Riferimento SDK
- Stack Overflow e siti web di tutorial
- Poiché la documentazione dei sensori a volte non era disponibile, gli sviluppatori si rivolgevano a siti web di domande e risposte come Stack Overflow per trovare le risposte.
- Esistono anche alcuni siti web di tutorial, ma non coprono le funzionalità più recenti come il raggruppamento, il movimento significativo e i vettori di rotazione del gioco.
- Le risposte non sono sempre corrette e mostrano dove è necessaria altra documentazione.
Diretti ai produttori
- Panoramica
- Questa pagina Sensori e le relative sottopagine.
- Hardware Abstraction Layer (HAL)
- CDD (Compatibility Definition Document) Android
- /compatibility/android-cdd.pdf
- Consulta le sezioni relative ai sensori.
- Il CDD è permissivo, pertanto soddisfare i requisiti del CDD non è sufficiente per garantire
sensori di alta qualità.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]