חיישנים

סמל של Android Sensors HAL

חיישני Android מאפשרים לאפליקציות לגשת לחיישנים הפיזיים הבסיסיים של מכשיר נייד. הם מכשירים וירטואליים שמספקים נתונים ומוגדרים על ידי sensors.h, שכבת הפשטת החומרה (HAL) של החיישן.

מהם חיישני Android?

חיישני Android הם מכשירים וירטואליים שמספקים נתונים שמגיעים ממערך של חיישנים פיזיים: מד תאוצה, ג'ירוסקופ, מגנטומטר, ברומטר, חיישני לחות, לחץ, אור, קרבה וקצב לב.

ברשימת המכשירים הפיזיים שמספקים נתונים לא נכללים מצלמה, חיישן טביעת אצבע, מיקרופון ומסך מגע. למכשירים האלה יש מנגנון דיווח משלהם. ההפרדה היא שרירותית, אבל באופן כללי, חיישני Android מספקים נתונים עם רוחב פס נמוך יותר. לדוגמה, '‎100 Hz x 3 channels' למד תאוצה לעומת '‎25 Hz x 8 MP x 3 channels' למצלמה או '‎44 kHz x 1 channel' למיקרופון.

מערכת Android לא מגדירה איך חיישנים פיזיים שונים מחוברים למערכת על שבב (SoC).

  • לרוב, שבבי החיישנים מחוברים ל-SoC דרך מרכז חיישנים, שמאפשר מעקב ועיבוד של הנתונים עם צריכת חשמל נמוכה.
  • לרוב, משתמשים ב-Inter-Integrated Circuit‏ (I2C) או ב-Serial Peripheral Interface‏ (SPI) כמנגנון התעבורה.
  • כדי להפחית את צריכת החשמל, חלק מהארכיטקטורות הן היררכיות, עם עיבוד מינימלי שמתבצע במעגל משולב ספציפי לאפליקציה (ASIC – כמו זיהוי תנועה בשבב מד התאוצה), ועיבוד נוסף שמתבצע במיקרו-בקר (כמו זיהוי צעדים במרכז חיישנים).
  • יצרן המכשיר בוחר את הארכיטקטורה על סמך מאפיינים של דיוק, עוצמה, מחיר וגודל החבילה. מידע נוסף זמין במאמר Sensor stack.
  • יכולות של עיבוד באצווה הן שיקול חשוב באופטימיזציה של צריכת החשמל. מידע נוסף זמין במאמר בנושא עיבוד באצווה.

לכל חיישן ב-Android יש 'סוג' שמייצג את אופן הפעולה של החיישן ואת הנתונים שהוא מספק.

  • סוגי החיישנים הרשמיים של Android Sensor types מוגדרים ב-sensors.h בשמות SENSOR_TYPE_…
    • לרוב החיישנים יש סוג חיישן רשמי.
    • הסוגים האלה מתועדים ב-Android SDK.
    • ההתנהגות של חיישנים מהסוגים האלה נבדקת בחבילה לבדיקות תאימות (CTS) של Android.
  • אם יצרן משלב סוג חדש של חיישן במכשיר Android, הוא יכול להגדיר סוג זמני משלו כדי להתייחס אליו.
    • הסוגים האלה לא מתועדים, ולכן סביר שמפתחי אפליקציות לא ישתמשו בהם, או כי הם לא יודעים על קיומם, או כי הם יודעים שהם מופיעים לעיתים רחוקות (רק במכשירים מסוימים של היצרן הספציפי הזה).
    • הם לא נבדקים על ידי CTS.
    • אחרי שמערכת Android תגדיר סוג חיישן רשמי לחיישן מהסוג הזה, היצרנים יצטרכו להפסיק להשתמש בסוג הזמני שלהם ולהשתמש בסוג הרשמי במקום זאת. כך יותר מפתחי אפליקציות יוכלו להשתמש בחיישן.
  • רשימת כל החיישנים שקיימים במכשיר מדווחת על ידי הטמעת ה-HAL.
    • יכולים להיות כמה חיישנים מאותו סוג. לדוגמה, שני חיישני קירבה או שני מדדי תאוצה.
    • ברוב המקרים, האפליקציות מבקשות רק חיישן אחד מסוג מסוים. לדוגמה, אפליקציה שמבקשת את מד התאוצה שמוגדר כברירת מחדל תקבל את מד התאוצה הראשון ברשימה.
    • חיישנים מוגדרים לרוב כזוגות של חיישנים שמעירים את המכשיר וחיישנים שלא מעירים את המכשיר. שני החיישנים הם מאותו סוג, אבל הם שונים בתכונת ההפעלה שלהם.

חיישני Android מספקים נתונים כסדרה של אירועים של חיישנים.

כל אירוע כולל:

  • הכינוי של החיישן שיצר את הנתון
  • חותמת הזמן שבה האירוע זוהה או נמדד, על סמך SystemClock.elapsedRealtimeNanos()
  • וחלק מהנתונים

הפרשנות של הנתונים שמדווחים תלויה בסוג החיישן. בקטע הגדרות של סוגי חיישנים מפורט אילו נתונים מדווחים עבור כל סוג חיישן.

מסמכים קיימים

מיועד למפתחים

מיועד ליצרנים

  • סקירה כללית
    • הדף Sensors ודפי המשנה שלו.
  • שיטת הפשטת חומרה (HAL)
  • מסמך ההגדרה של תאימות (CDD) של Android
    • /compatibility/android-cdd.pdf
    • אפשר לעיין בקטעים שקשורים לחיישנים.
    • הדרישות של CDD הן מקלות, ולכן עמידה בדרישות האלה לא מספיקה כדי להבטיח חיישנים באיכות גבוהה.