החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
חיישנים
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
חיישני Android מעניקים לאפליקציות גישה לחיישנים הפיזיים הבסיסיים של המכשיר הנייד. אלה מכשירים וירטואליים שמספקים נתונים, שמוגדרים על ידי sensors.h, שכבת ההפשטה של החומרה (HAL) של החיישן.
מהם חיישני Android?
חיישני Android הם מכשירים וירטואליים שמספקים נתונים שמגיעים מקבוצה של חיישנים פיזיים: מדי תאוצה, ג'ירוסקופים, מגנטומטרים, ברומטר, חיישנים לחות, לחץ, אור, קרבה וקצב לב.
המכשירים הפיזיים שאינם נכללים ברשימה של המכשירים שמספקים נתונים הם מצלמה, חיישן טביעות אצבע, מיקרופון ומסך מגע. למכשירים האלה יש מנגנון דיווח משלהם. ההפרדה היא שרירותית, אבל באופן כללי, חיישני Android מספקים נתונים של רוחב פס נמוך יותר. לדוגמה, '100Hz x 3 channels' למדד תאוצה לעומת '25Hz x 8MP x 3 channels' למצלמה או '44kHz x 1 channel' למיקרופון.
מערכת Android לא מגדירה איך החיישנים הפיזיים השונים מחוברים למערכת על שבב (SoC).
- לרוב, צ'יפים של חיישנים מחוברים ל-SoC דרך רכזת חיישנים, שמאפשרת מעקב מסוים אחרי הנתונים ועיבוד שלהם בצריכת אנרגיה נמוכה.
- לרוב, משתמשים במעגלים משולבים (I2C) או בממשק בין-ציוד היקפי (SPI) בתור מנגנון התעבורה.
- כדי לצמצם את צריכת החשמל, יש ארכיטקטורות היררכיות שבהן מתבצע עיבוד מינימלי במעגל המשולב הייעודי לאפליקציה (ASIC – כמו זיהוי תנועה בשבב ה-accelerometer), ועיבוד נוסף מתבצע במיקרו-בקר (כמו זיהוי צעדים ב-sensor hub).
- יצרן המכשיר הוא זה שצריך לבחור ארכיטקטורה על סמך המאפיינים של הדיוק, הכוח, המחיר וגודל החבילה. מידע נוסף זמין במאמר מקבץ חיישנים.
- יכולות הקיבוץ הן שיקול חשוב באופטימיזציה של צריכת החשמל. למידע נוסף, ראו אוסף בקשות.
לכל חיישן ב-Android יש 'סוג' שמייצג את אופן הפעולה של החיישן ואת הנתונים שהוא מספק.
- סוגי החיישנים הרשמיים של Android מוגדרים בקובץ sensors.h בשמות SENSOR_TYPE_…
- לרוב המכריע של החיישנים יש סוג חיישן רשמי.
- הסוגים האלה מתועדים ב-Android SDK.
- ההתנהגות של חיישנים מהסוגים האלה נבדקת ב-Android Compatibility Test Suite (CTS).
- אם יצרן משלב סוג חדש של חיישן במכשיר Android, הוא יכול להגדיר סוג זמני משלו כדי להפנות אליו.
- הסוגים האלה לא מתועדים, ולכן סביר להניח שמפתחי אפליקציות לא ישתמשו בהם, כי הם לא יודעים עליהם או כי הם יודעים שהם נמצאים רק במכשירים מסוימים של היצרן הספציפי הזה.
- הן לא נבדקות על ידי CTS.
- אחרי שמערכת Android תגדיר סוג חיישן רשמי לסוג הזה של חיישן, היצרנים יצטרכו להפסיק להשתמש בסוג הזמני שלהם ולהשתמש במקום זאת בסוג הרשמי. כך, יותר מפתחי אפליקציות יוכלו להשתמש בחיישן.
- רשימת כל החיישנים שנמצאים במכשיר מדווחת על ידי הטמעת ה-HAL.
- יכולים להיות כמה חיישנים מאותו סוג. לדוגמה, שני חיישני קירבה או שני מדדי תאוצה.
- רוב האפליקציות מבקשות רק חיישן אחד מסוג נתון. לדוגמה, אפליקציה שמבקשת את מכשיר ה-accelerometer שמוגדר כברירת מחדל תקבל את מכשיר ה-accelerometer הראשון ברשימה.
- לרוב, חיישנים מוגדרים לפי זוגות של התעוררות ולא התעוררות, כששני החיישנים שייכים לאותו סוג אבל שונים במאפיין ההתעוררות שלהם.
חיישני Android מספקים נתונים כסדרה של אירועי חיישנים.
כל אירוע מכיל:
הפרשנות של הנתונים המדווחים תלויה בסוג החיישן. תוכלו לעיין בהגדרות של סוג החיישן כדי לקבל פרטים על הנתונים שמדווחים לגבי כל סוג חיישן.
מסמכים קיימים
טירגוט למפתחים
- סקירה כללית
- מסמך עזרה בנושא SDK
- Stack Overflow ואתרי מדריכים
- לפעמים מסמכי התיעוד של החיישנים היו חסרים, ולכן המפתחים נאלצו להיעזר באתרים של שאלות ותשובות כמו Stack Overflow כדי למצוא תשובות.
- יש גם כמה אתרי הדרכה, אבל הם לא עוסקים בתכונות החדשות ביותר, כמו צבירה, תנועה משמעותית ווקטור רוטציה של משחק.
- התשובות שם לא תמיד נכונות, והן מראות איפה נדרשים מסמכים נוספים.
טירגוט ליצרנים
- סקירה כללית
- שיטת הפשטת חומרה (HAL)
- Android CDD (מסמך הגדרת תאימות)
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון 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-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."]]