חיישנים

סמל Android Sensors HAL

חיישני 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 מספקים נתונים כסדרה של אירועי חיישנים.

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

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

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

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

טירגוט למפתחים

טירגוט ליצרנים

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