סוגי חיישנים

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

צירי חיישן

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

צירי מכשיר נייד

ה-Sensor API הוא יחסי רק לכיוון הטבעי של המסך (הצירים אינם מוחלפים כאשר כיוון המסך של המכשיר משתנה.

מערכת קואורדינטות של חיישן API עבור מכשירים ניידים

איור 1. מערכת קואורדינטות (ביחס למכשיר נייד) המשמשת את Sensor API

צירי רכב

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

  • ציר X מצביע ימינה ונמצא במישור אופקי, בניצב למישור הסימטריה של הרכב.
  • ציר Y מצביע קדימה ונמצא במישור אופקי.
מערכת קואורדינטות של חיישן API עבור מכשירי רכב

איור 2. מערכת קואורדינטות (ביחס להתקן רכב) המשמשת את ה-Sensor API

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

ציר ה-Z של מסגרת הייחוס מיושר לכוח הכבידה, מה שאומר שציר ה-X וציר ה-Y שניהם אופקיים. כתוצאה מכך, ציר ה-Y לא תמיד יעבור דרך הציר הקדמי.

חיישני בסיס

סוגי חיישני בסיס נקראים על שם החיישנים הפיזיים שהם מייצגים. חיישנים אלו מעבירים נתונים מחישן פיזי בודד (בניגוד לחיישנים מרוכבים שמייצרים נתונים מחיישנים אחרים). דוגמאות לסוגי חיישני בסיס כוללות:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

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

לדוגמה, המאפיינים של חיישן בסיס עשויים להיות שונים מהמאפיינים של החיישן הפיזי הבסיסי שלו במקרים השימוש הבאים:

  • שבב גירוסקופ מדורג לטווח הטיה של 1 מעלות לשנייה.
    • לאחר כיול מפעל, פיצוי טמפרטורה ופיצוי הטיה מיושמים, ההטיה בפועל של חיישן האנדרואיד תפחת, עשויה להיות עד לנקודה שבה ההטיה מובטחת מתחת ל-0.01 מעלות לשנייה.
    • במצב זה, אנו אומרים שלחיישן האנדרואיד יש הטיה מתחת ל-0.01 מעלות לשנייה, למרות שגיליון הנתונים של החיישן הבסיסי אמר 1 מעלות לשנייה.
  • ברומטר בצריכת חשמל של 100 uW.
    • מכיוון שצריך להעביר את הנתונים שנוצרים מהשבב ל-SoC, עלות הכוח בפועל לאיסוף נתונים מחיישן האנדרואיד הברומטר עשויה להיות גבוהה בהרבה, למשל 1000 uW.
    • במצב זה, אנו אומרים שלחיישן האנדרואיד יש צריכת חשמל של 1000 uW, למרות שצריכת החשמל הנמדדת במובילי שבב הברומטר היא 100uW.
  • מגנומטר שצורך 100uW בכיול, אך צורך יותר בכיול.
    • שגרת הכיול שלו עשויה לדרוש הפעלת הג'ירוסקופ, צריכת 5000 uW והפעלת אלגוריתם כלשהו, ​​בעלות של עוד 900 uW.
    • במצב זה, אנו אומרים שצריכת החשמל המקסימלית של חיישן האנדרואיד (מגנטומטר) היא 6000 uW.
    • במקרה זה, צריכת החשמל הממוצעת היא המדד השימושי יותר, וזה מה שמדווח במאפיינים הסטטיים של החיישן דרך ה-HAL.

מד תאוצה

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) מחזיר חיישן שאינו מתעורר

חיישן מד תאוצה מדווח על האצת המכשיר לאורך שלושת צירי החיישן. התאוצה הנמדדת כוללת גם את התאוצה הפיזית (שינוי מהירות) וגם את כוח המשיכה. המדידה מדווחת בשדות x, y ו-z של sensors_event_t.acceleration.

כל הערכים הם ביחידות SI (m/s^2) ומודדים את תאוצת המכשיר מינוס כוח הכבידה לאורך שלושת צירי החיישן.

הנה דוגמאות:

  • הנורמה של (x, y, z) צריכה להיות קרובה ל-0 בעת נפילה חופשית.
  • כאשר המכשיר שוכב שטוח על שולחן ונדחק בצדו השמאלי לכיוון ימין, ערך התאוצה x חיובי.
  • כאשר המכשיר שוכב שטוח על שולחן, ערך התאוצה לאורך z הוא +9.81 alo, המתאים לתאוצת המכשיר (0 m/s^2) פחות כוח הכבידה (-9.81 m/s^2).
  • כאשר המכשיר שוכב שטוח על שולחן ונדחק לכיוון השמים, ערך התאוצה גדול מ-9.81+, המתאים לתאוצת המכשיר (+A m/s^2) פחות כוח הכבידה (-9.81 מ'). /s^2).

הקריאות מכוילות באמצעות:

  • פיצוי טמפרטורה
  • כיול הטיה מקוון
  • כיול קנה מידה מקוון

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

מד התאוצה גם מדווח עד כמה מדויק הוא מצפה שהקריאות שלו יהיו באמצעות sensors_event_t.acceleration.status . עיין בקבועי SENSOR_STATUS_* של SensorManager למידע נוסף על ערכים אפשריים עבור שדה זה.

טמפרטורת הסביבה

מצב דיווח: בשינוי

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) מחזיר חיישן שאינו מתעורר

חיישן זה מספק את טמפרטורת הסביבה (חדר) במעלות צלזיוס.

חיישן שדה מגנטי

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) מחזיר חיישן שאינו מתעורר

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

חיישן שדה מגנטי (המכונה גם מגנומטר) מדווח על השדה המגנטי הסביבה, כפי שנמדד לאורך שלושת צירי החיישן.

המדידה מדווחת בשדות x, y ו-z של sensors_event_t.magnetic וכל הערכים הם במיקרו-טסלה (uT).

המגנומטר גם מדווח עד כמה מדויק הוא מצפה שהקריאות שלו יהיו באמצעות sensors_event_t.magnetic.status . עיין בקבועי SENSOR_STATUS_* של SensorManager למידע נוסף על ערכים אפשריים עבור שדה זה.

הקריאות מכוילות באמצעות:

  • פיצוי טמפרטורה
  • כיול ברזל רך במפעל (או מקוון).
  • כיול ברזל קשיח מקוון

ג'ִירוֹסקוֹפּ

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) מחזיר חיישן שאינו מתעורר

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

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

המדידה מדווחת בשדות x, y ו-z של sensors_event_t.gyro וכל הערכים הם ברדיאנים לשנייה (rad/s).

הקריאות מכוילות באמצעות:

  • פיצוי טמפרטורה
  • פיצוי בקנה מידה מפעל (או מקוון).
  • כיול הטיה מקוון (כדי להסיר סחף)

הג'ירוסקופ גם מדווח עד כמה הוא מצפה שהקריאות שלו יהיו מדויקות באמצעות sensors_event_t.gyro.status . עיין בקבועי SENSOR_STATUS_* של SensorManager למידע נוסף על ערכים אפשריים עבור שדה זה.

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

קצב לב

מצב דיווח: בשינוי

getDefaultSensor(SENSOR_TYPE_HEART_RATE) מחזיר חיישן שאינו מתעורר

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

הדופק הנוכחי בפעימות לדקה (BPM) מדווח ב- sensors_event_t.heart_rate.bpm ומצב החיישן מדווח ב- sensors_event_t.heart_rate.status . עיין בקבועי SENSOR_STATUS_* של SensorManager למידע נוסף על ערכים אפשריים עבור שדה זה. בפרט, עם ההפעלה הראשונה, אלא אם ידוע שהמכשיר אינו על הגוף, יש להגדיר את שדה המצב של האירוע הראשון ל- SENSOR_STATUS_UNRELIABLE . מכיוון שחיישן זה משתנה, אירועים נוצרים כאשר ורק כאשר heart_rate.bpm או heart_rate.status השתנו מאז האירוע האחרון. האירועים נוצרים לא מהר יותר מכל sampling_period .

sensor_t.requiredPermission היא תמיד SENSOR_PERMISSION_BODY_SENSORS .

אוֹר

מצב דיווח: בשינוי

getDefaultSensor(SENSOR_TYPE_LIGHT) מחזיר חיישן שאינו מתעורר

חיישן אור מדווח על התאורה הנוכחית ביחידות SI lux.

המדידה מדווחת ב- sensors_event_t.light .

קִרבָה

מצב דיווח: בשינוי

בדרך כלל מוגדר כחיישן התעוררות

getDefaultSensor(SENSOR_TYPE_PROXIMITY) מחזיר חיישן התעוררות

חיישן קרבה מדווח על המרחק מהחיישן למשטח הנראה הקרוב ביותר.

עד אנדרואיד 4.4, חיישני הקרבה היו תמיד חיישני התעוררות, שהעירו את ה-SoC בעת זיהוי שינוי בסמיכות. לאחר אנדרואיד 4.4, אנו ממליצים ליישם תחילה את גרסת ההתעוררות של חיישן זה, מכיוון שהיא זו המשמשת להפעלה וכיבוי של המסך בזמן ביצוע שיחות טלפון.

המדידה מדווחת בסנטימטרים ב- sensors_event_t.distance . שימו לב שחיישני קרבה מסוימים תומכים רק במדידה בינארית של "קרוב" או "רחוק". במקרה זה, החיישן מדווח על ערך ה- sensor_t.maxRange שלו במצב "רחוק" וערך קטן מ- sensor_t.maxRange במצב "קרוב".

לַחַץ

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_PRESSURE) מחזיר חיישן שאינו מתעורר

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

הקריאות מכוילות באמצעות

  • פיצוי טמפרטורה
  • כיול הטיה במפעל
  • כיול בקנה מידה מפעל

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

לחות יחסית

מצב דיווח: בשינוי

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) מחזיר חיישן שאינו מתעורר

חיישן לחות יחסית מודד את הלחות היחסית באוויר ומחזיר ערך באחוזים.

סוגי חיישנים מרוכבים

חיישן מורכב מייצר נתונים על ידי עיבוד ו/או מיזוג נתונים מחיישנים פיזיים אחד או כמה. (כל חיישן שאינו חיישן בסיס נקרא חיישן מורכב.) דוגמאות לחיישנים מרוכבים כוללות:

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

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

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

סוג חיישן קטגוריה חיישנים פיזיים בבסיס מצב דיווח

וקטור סיבוב משחק

יַחַס

מד תאוצה, גירוסקופ, אסור להשתמש במגנטומטר

רָצִיף

וקטור סיבוב גיאומגנטי חיישן הספק נמוך

יַחַס

מד תאוצה, מגנומטר, אסור להשתמש בג'ירוסקופ

רָצִיף

מחוות מבט חיישן הספק נמוך

אינטראקציה

לא מוגדר

ירייה אחת

כוח משיכה

יַחַס

מד תאוצה, גירוסקופ

רָצִיף

גירוסקופ לא מכויל

לא מכויל

ג'ִירוֹסקוֹפּ

רָצִיף

תאוצה לינארית

פעילות

מד תאוצה, ג'ירוסקופ (אם קיים), או מגנומטר (אם אין ג'ירו)

רָצִיף

שדה מגנטי לא מכויל

לא מכויל

מגנומטר

רָצִיף

כיוון (הוצא משימוש)

יַחַס

מד תאוצה, מגנומטר, גירוסקופ (אם קיים)

רָצִיף

הרם מחווה חיישן הספק נמוך

אינטראקציה

לא מוגדר

ירייה אחת

וקטור סיבוב

יַחַס

מד תאוצה, מגנומטר, גירוסקופ

רָצִיף

תנועה משמעותית חיישן הספק נמוך

פעילות

מד תאוצה (או אחר כל עוד הספק נמוך מאוד)

ירייה אחת

מד צעדים חיישן הספק נמוך

פעילות

מד תאוצה

בשינוי

גלאי צעדים חיישן הספק נמוך

פעילות

מד תאוצה

מיוחד

גלאי הטיה חיישן הספק נמוך

פעילות

מד תאוצה

מיוחד

מחווה להתעורר חיישן הספק נמוך

אינטראקציה

לא מוגדר

ירייה אחת

חיישן הספק נמוך = חיישן הספק נמוך

חיישני פעילות מרוכבים

תאוצה לינארית

חיישנים פיזיים בבסיס: מד תאוצה וג'ירוסקופ (אם קיים) (או מגנומטר אם אין גירוסקופ)

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) מחזיר חיישן שאינו מתעורר

חיישן תאוצה ליניארית מדווח על התאוצה הליניארית של המכשיר במסגרת החיישן, לא כולל כוח הכבידה.

התפוקה היא רעיונית: פלט של מד התאוצה מינוס הפלט של חיישן הכבידה . זה מדווח ב-m/s^2 בשדות x, y ו-z של sensors_event_t.acceleration .

הקריאות בכל הצירים צריכות להיות קרובות ל-0 כאשר המכשיר אינו פעיל.

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

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

תנועה משמעותית

חיישן פיזי בסיסי: מד תאוצה (או מד תאוצה אחר, כל עוד הספק נמוך)

מצב דיווח: חד פעמי

צריכת חשמל נמוכה

יישם רק את גרסת ההתעוררות של חיישן זה.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) מחזיר חיישן השכמה

גלאי תנועה משמעותי מופעל בעת זיהוי תנועה משמעותית : תנועה שעלולה להוביל לשינוי במיקום המשתמש.

דוגמאות לתנועות משמעותיות כאלה הן:

  • הליכה או רכיבה על אופניים
  • יושב במכונית נוסעת, אוטובוס או רכבת

דוגמאות למצבים שאינם מפעילים תנועה משמעותית:

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

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

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

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

כל אירוע חיישן מדווח על 1 ב- sensors_event_t.data[0] .

גלאי צעדים

חיישן פיזי בסיסי: מד תאוצה (+ אולי אחרים כל עוד הספק נמוך)

מצב דיווח: מיוחד (אירוע אחד בכל צעד שנעשה)

צריכת חשמל נמוכה

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) מחזיר חיישן שאינו מתעורר

גלאי צעדים יוצר אירוע בכל פעם שנעשה צעד על ידי המשתמש.

חותמת הזמן של sensors_event_t.timestamp האירועים_event_t.timestamp מתאימה למועד פגיעת הרגל בקרקע, מה שיוצר וריאציה גבוהה בתאוצה.

בהשוואה למונה הצעדים, לגלאי הצעדים אמור להיות חביון נמוך יותר (פחות משתי שניות). גם גלאי הצעדים וגם מונה הצעדים מזהים כאשר המשתמש הולך, רץ ועולה במעלה המדרגות. הם לא אמורים להפעיל כאשר המשתמש רוכב על אופניים, נוהג או ברכב אחר.

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

sampling_period_ns אין השפעה על גלאי צעדים.

כל אירוע חיישן מדווח על 1 ב- sensors_event_t.data[0] .

מד צעדים

חיישן פיזי בסיסי: מד תאוצה (+ אולי אחרים כל עוד הספק נמוך)

מצב דיווח: בשינוי

צריכת חשמל נמוכה

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) מחזיר חיישן שאינו מתעורר

מונה צעדים מדווח על מספר הצעדים שבוצע על ידי המשתמש מאז האתחול האחרון בזמן ההפעלה.

המדידה מדווחת כ- uint64_t ב- sensors_event_t.step_counter ומאופסת לאפס רק באתחול מחדש של המערכת.

חותמת הזמן של האירוע מוגדרת לשעה שבה נעשה הצעד האחרון עבור אותו אירוע.

ראה את סוג חיישן גלאי הצעד לסימן הזמן של צעד.

בהשוואה לגלאי הצעדים, מונה הצעדים יכול להיות בעל חביון גבוה יותר (עד 10 שניות). הודות לאחביון זה, לחיישן זה יש דיוק גבוה; ספירת הצעדים לאחר יום שלם של מדידות צריכה להיות בטווח של 10% מספירת הצעדים בפועל. גם גלאי הצעדים וגם מונה הצעדים מזהים כאשר המשתמש הולך, רץ ועולה במעלה המדרגות. הם לא אמורים להפעיל כאשר המשתמש רוכב על אופניים, נוהג או ברכב אחר.

החומרה חייבת להבטיח שספירת הצעדים הפנימית לעולם לא תעלה על גדותיה. הגודל המינימלי של המונה הפנימי של החומרה יהיה 16 סיביות. במקרה של גלישה קרובה (לכל היותר כל ~2^16 שלבים), ניתן להעיר את ה-SoC כך שהנהג יוכל לבצע את תחזוקת הדלפק.

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

אם מכשיר מסוים אינו יכול לתמוך במצבי פעולה אלה, אין לדווח על סוג חיישן זה על ידי ה-HAL. כלומר, זה לא מקובל "לחקות" את החיישן הזה ב-HAL.

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

גלאי הטיה

חיישן פיזי בסיסי: מד תאוצה (+ אולי אחרים כל עוד הספק נמוך)

מצב דיווח: מיוחד

צריכת חשמל נמוכה

יישם רק את גרסת ההתעוררות של חיישן זה.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) מחזיר חיישן השכמה

גלאי הטיה יוצר אירוע בכל פעם שמתגלה אירוע הטיה.

אירוע הטיה מוגדר על ידי כיוון הכבידה הממוצעת של חלון 2 שניות המשתנה ב-35 מעלות לפחות מאז ההפעלה או האירוע האחרון שנוצר על ידי החיישן. הנה האלגוריתם:

  • reference_estimated_gravity = ממוצע מדידות מד התאוצה במהלך השניה הראשונה לאחר ההפעלה או כוח המשיכה המשוער כאשר אירוע ההטיה האחרון נוצר.
  • current_estimated_gravity = ממוצע מדידות מד התאוצה ב-2 השניות האחרונות.
  • הפעלה כאשר angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

האצות גדולות ללא שינוי בכיוון הטלפון לא אמורות להפעיל אירוע הטיה. לדוגמה, פנייה חדה או האצה חזקה בזמן נהיגה במכונית לא אמורות להפעיל אירוע הטיה, למרות שזווית התאוצה הממוצעת עשויה להשתנות ביותר מ-35 מעלות. בדרך כלל, חיישן זה מיושם בעזרת מד תאוצה בלבד. ניתן להשתמש בחיישנים אחרים גם אם הם לא מגדילים את צריכת החשמל באופן משמעותי. זהו חיישן בעל הספק נמוך שאמור לאפשר ל-SoC לעבור למצב השעיה. אין לחקות חיישן זה ב-HAL. כל אירוע חיישן מדווח על 1 ב- sensors_event_t.data[0] .

חיישנים מרוכבים של גישה

וקטור סיבוב

חיישנים פיזיים בבסיס: מד תאוצה, מגנומטר וג'ירוסקופ

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) מחזיר חיישן שאינו מתעורר

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

  • X מצביע מזרחה ומשיק לקרקע.
  • Y מצביע צפונה ומשיק לקרקע.
  • Z מצביע לכיוון השמים ומאונך לקרקע.

כיוון הטלפון מיוצג על ידי הסיבוב הדרוש כדי ליישר קואורדינטות מזרח-צפון-מעלה עם הקואורדינטות של הטלפון. כלומר, החלת הסיבוב על המסגרת העולמית (X,Y,Z) תיישר אותם עם קואורדינטות הטלפון (x,y,z).

ניתן לראות את הסיבוב כסיבוב הטלפון בזווית תטא סביב ציר rot_axis כדי לעבור מכיוון ההפניה (מיושר מזרח-צפון-מעלה) לכיוון המכשיר הנוכחי. הסיבוב מקודד כארבעת רכיבי x, y, z, w חסרי יחידות של קווטרניון יחידה:

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

איפה:

  • שדות x, y ו-z של rot_axis הם קואורדינטות מזרח-צפון-מעלה של וקטור יחידת אורך המייצג את ציר הסיבוב
  • theta היא זווית הסיבוב

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

בנוסף, חיישן זה מדווח על דיוק כיוון משוער:

sensors_event_t.data[4] = estimated_accuracy (ברדיאנים)

שגיאת הכותרת חייבת להיות פחות מ- estimated_accuracy ב-95% מהמקרים. חיישן זה חייב להשתמש בג'ירוסקופ ככניסת שינוי הכיוון העיקרי.

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

וקטור סיבוב משחק

חיישנים פיזיים בבסיס: מד תאוצה וג'ירוסקופ (ללא מגנומטר)

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) מחזיר חיישן שאינו מתעורר

חיישן וקטור סיבוב משחק דומה לחיישן וקטור סיבוב אך אינו משתמש בשדה הגיאומגנטי. לכן ציר ה-Y אינו מצביע צפונה אלא להתייחסות אחרת. ההתייחסות הזו מותרת להיסחף באותו סדר גודל כמו שהגירוסקופ נסחף סביב ציר Z.

ראה חיישן וקטור סיבוב לפרטים כיצד להגדיר sensors_event_t.data[0-3] . חיישן זה אינו מדווח על דיוק משוער של הכיוון: sensors_event_t.data[4] שמור ויש להגדיר אותו ל 0 .

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

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

כוח משיכה

חיישנים פיזיים בבסיס: מד תאוצה וג'ירוסקופ (אם קיים) (או מגנומטר אם אין גירוסקופ)

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_GRAVITY) מחזיר חיישן שאינו מתעורר

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

רכיבי וקטור הכבידה מדווחים ב-m/s^2 בשדות x, y ו-z של sensors_event_t.acceleration .

כאשר המכשיר במנוחה, הפלט של חיישן הכבידה צריך להיות זהה לזו של מד התאוצה. על פני כדור הארץ, הגודל הוא סביב 9.8 m/s^2.

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

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

וקטור סיבוב גיאומגנטי

חיישנים פיזיים בבסיס: מד תאוצה ומגנטומטר (ללא גירוסקופ)

מצב דיווח: רציף

צריכת חשמל נמוכה

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) מחזיר חיישן שאינו מתעורר

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

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

ראה חיישן וקטור סיבוב לפרטים כיצד להגדיר sensors_event_t.data[0-4] .

בדיוק כמו עבור חיישן וקטור הסיבוב, שגיאת הכיוון חייבת להיות פחותה מהדיוק המשוער ( sensors_event_t.data[4] ) 95% מהזמן.

חיישן זה חייב להיות בעל הספק נמוך, ולכן יש ליישם אותו בחומרה.

כיוון (הוצא משימוש)

חיישנים פיזיים בבסיס: מד תאוצה, מגנומטר וג'ירוסקופ (אם קיים).

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_ORIENTATION) מחזיר חיישן שאינו מתעורר

הערה: זהו סוג חיישן ישן יותר שהוצא משימוש ב-Android SDK. הוא הוחלף על ידי חיישן וקטור הסיבוב, המוגדר בצורה ברורה יותר. השתמש בחיישן וקטור הסיבוב מעל חיישן הכיוון במידת האפשר.

חיישן התמצאות מדווח על יחס המכשיר. המדידות מדווחות במעלות בשדות x, y ו-z של sensors_event_t.orientation :

  • sensors_event_t.orientation.x : אזימוט, הזווית בין כיוון הצפון המגנטי לציר Y, ​​סביב ציר Z ( 0<=azimuth<360 ). 0=צפון, 90=מזרח, 180=דרום, 270=מערב.
  • sensors_event_t.orientation.y : פסיעה, סיבוב סביב ציר X ( -180<=pitch<=180 ), עם ערכים חיוביים כאשר ציר Z נע לכיוון ציר Y.
  • sensors_event_t.orientation.z : גלגול, סיבוב סביב ציר Y ( -90<=roll<=90 ), עם ערכים חיוביים כאשר ציר X נע לכיוון ציר Z.

שימו לב, מסיבות היסטוריות זווית הגלגול חיובית בכיוון השעון. (באופן מתמטי, זה צריך להיות חיובי נגד כיוון השעון):

תיאור של כיוון ביחס למכשיר

איור 3. כיוון ביחס למכשיר

הגדרה זו שונה מפיהוק, גובה וגלילה המשמשים בתעופה כאשר ציר ה-X נמצא לאורך הצד הארוך של המטוס (זנב לאף).

חיישן הכיוון מדווח גם עד כמה הוא מצפה שהקריאות שלו יהיו מדויקות דרך sensors_event_t.orientation.status . עיין בקבועי SENSOR_STATUS_* של SensorManager למידע נוסף על ערכים אפשריים עבור שדה זה.

חיישנים לא מכוילים

חיישנים לא מכוילים מספקים יותר תוצאות גולמיות ועשויים לכלול הטיה מסוימת אך גם להכיל פחות "קפיצות" מתיקונים שהופעלו באמצעות כיול. אפליקציות מסוימות עשויות להעדיף את התוצאות הלא מכוילות הללו כחלקות ואמינות יותר. לדוגמה, אם אפליקציה מנסה לבצע היתוך חיישנים משלה, הכנסת כיולים יכולה למעשה לעוות את התוצאות.

מד תאוצה לא מכויל

חיישן פיזי בסיסי: מד תאוצה

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) מחזיר חיישן שאינו מתעורר

חיישן מד תאוצה לא מכויל מדווח על תאוצת המכשיר לאורך שלושת צירי החיישן ללא כל תיקון הטיה (הטיית מפעל ופיצוי טמפרטורה מופעלים על מדידות לא מכוילות), יחד עם אומדן הטיה. כל הערכים הם ביחידות SI (m/s^2) ומדווחים בתחומים של sensors_event_t.uncalibrated_accelerometer :

  • x_uncalib : תאוצה (ללא פיצוי הטיה) לאורך ציר X
  • y_uncalib : תאוצה (ללא פיצוי הטיה) לאורך ציר Y
  • z_uncalib : תאוצה (ללא פיצוי הטיה) לאורך ציר Z
  • x_bias : הטיה משוערת לאורך ציר X
  • y_bias : הטיה משוערת לאורך ציר Y
  • z_bias : הטיה משוערת לאורך ציר Z

גירוסקופ לא מכויל

חיישן פיזי בסיסי: גירוסקופ

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) מחזיר חיישן שאינו מתעורר

גירוסקופ לא מכויל מדווח על קצב הסיבוב סביב צירי החיישן מבלי להחיל עליהם פיצוי הטיה, יחד עם אומדן הטיה. כל הערכים הם ברדיאנים/שנייה ומדווחים בשדות של sensors_event_t.uncalibrated_gyro :

  • x_uncalib : מהירות זוויתית (ללא פיצוי סחיפה) סביב ציר X
  • y_uncalib : מהירות זוויתית (ללא פיצוי סחיפה) סביב ציר Y
  • z_uncalib : מהירות זוויתית (ללא פיצוי סחיפה) סביב ציר Z
  • x_bias : סחיפה משוערת סביב ציר X
  • y_bias : סחיפה משוערת סביב ציר Y
  • z_bias : סחיפה משוערת סביב ציר Z

מבחינה רעיונית, המדידה הלא מכוילת היא הסכום של המדידה המכוילת ואומדן ההטיה: _uncalibrated = _calibrated + _bias .

ערכי x_bias , y_bias ו- z_bias צפויים לקפוץ ברגע שהאומדן של ההטיה משתנה, והם אמורים להיות יציבים בשאר הזמן.

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

יש ליישם כיול מפעל ופיצוי טמפרטורה על המדידות. כמו כן, יש ליישם אומדן סחיפה של גירוסקופ כך שניתן יהיה לדווח על אומדנים סבירים ב- x_bias , y_bias ו- z_bias . אם היישום אינו מסוגל להעריך את הסחף, אז אסור ליישם חיישן זה.

אם חיישן זה קיים, חיישן הג'ירוסקופ המתאים חייב להיות קיים ושני החיישנים חייבים לחלוק את אותם ערכי sensor_t.name ו- sensor_t.vendor .

שדה מגנטי לא מכויל

חיישן פיזי בסיסי: מגנומטר

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) מחזיר חיישן שאינו מתעורר

חיישן שדה מגנטי לא מכויל מדווח על השדה המגנטי הסביבה יחד עם אומדן כיול ברזל קשיח. כל הערכים נמצאים במיקרו-טסלה (uT) ומדווחים בתחומים של sensors_event_t.uncalibrated_magnetic :

  • x_uncalib : שדה מגנטי (ללא פיצוי ברזל קשיח) לאורך ציר ה-X
  • y_uncalib : שדה מגנטי (ללא פיצוי ברזל קשיח) לאורך ציר Y
  • z_uncalib : שדה מגנטי (ללא פיצוי ברזל קשה) לאורך ציר Z
  • x_bias : הטיה משוערת של ברזל קשה לאורך ציר X
  • y_bias : הטיה משוערת של ברזל קשה לאורך ציר Y
  • z_bias : הטיה משוערת של ברזל קשה לאורך ציר Z

מבחינה רעיונית, המדידה הלא מכוילת היא הסכום של המדידה המכוילת ואומדן ההטיה: _uncalibrated = _calibrated + _bias .

המגנומטר הלא מכויל מאפשר לאלגוריתמים ברמה גבוהה יותר להתמודד עם הערכת ברזל קשה. ערכי x_bias , y_bias ו- z_bias צפויים לקפוץ ברגע שההערכה של הברזל הקשיח משתנה, והם אמורים להיות יציבים בשאר הזמן.

יש ליישם כיול ברזל רך ופיצוי טמפרטורה על המדידות. כמו כן, יש ליישם אומדן ברזל קשה כך שניתן יהיה לדווח על אומדנים סבירים ב- x_bias , y_bias ו- z_bias . אם היישום אינו מסוגל להעריך את ההטיה, אז אסור ליישם את החיישן הזה.

אם חיישן זה קיים, חיישן השדה המגנטי המתאים חייב להיות קיים ושני החיישנים חייבים לחלוק את אותם ערכי sensor_t.name ו- sensor_t.vendor .

זווית ציר

מצב דיווח: בשינוי

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) מחזיר חיישן השכמה

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

אינטראקציה של חיישנים מרוכבים

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

מחווה להתעורר

חיישנים פיזיים בבסיס: לא מוגדר (כל דבר בהספק נמוך)

מצב דיווח: חד פעמי

צריכת חשמל נמוכה

יישם רק את גרסת ההתעוררות של חיישן זה.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) מחזיר חיישן השכמה

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

חיישן זה חייב להיות בעל הספק נמוך, מכיוון שהוא צפוי להיות מופעל 24/7.

כל אירוע חיישן מדווח על 1 ב- sensors_event_t.data[0] .

הרם מחווה

חיישנים פיזיים בבסיס: לא מוגדר (כל דבר בהספק נמוך)

מצב דיווח: חד פעמי

צריכת חשמל נמוכה

יישם רק את גרסת ההתעוררות של חיישן זה.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) מחזיר חיישן השכמה

חיישן מחוות איסוף מופעל כאשר המכשיר נאסף ללא קשר למקום בו היה קודם (שולחן עבודה, כיס, תיק).

כל אירוע חיישן מדווח על 1 ב- sensors_event_t.data[0] .

מחוות מבט

חיישנים פיזיים בבסיס: לא מוגדר (כל דבר בהספק נמוך)

מצב דיווח: חד פעמי

צריכת חשמל נמוכה

יישם רק את גרסת ההתעוררות של חיישן זה.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) מחזיר חיישן השכמה

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

חיישן זה חייב להיות בעל הספק נמוך, מכיוון שהוא צפוי להיות מופעל 24/7. כל אירוע חיישן מדווח על 1 ב- sensors_event_t.data[0] .

חיישני IMU בצירים מוגבלים

זמין מאנדרואיד 13, חיישני IMU עם צירים מוגבלים הם חיישנים התומכים במקרים שבהם לא כל שלושת הצירים (x, y, z) זמינים. סוגי IMU סטנדרטיים באנדרואיד (כגון SENSOR_TYPE_ACCELEROMETER ו- SENSOR_TYPE_GYROSCOPE ) מניחים שכל שלושת הצירים נתמכים. עם זאת, לא כל גורמי הצורה וההתקנים תומכים במדי תאוצה בעלי שלושה צירים ובגירוסקופים בעלי שלושה צירים.

צירים מוגבלים מד תאוצה

חיישנים פיזיים בבסיס: מד תאוצה

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) מחזיר חיישן שאינו מתעורר

חיישן צירים מוגבל מד תאוצה שווה ערך ל- TYPE_ACCELEROMETER אך תומך במקרים בהם ציר אחד או שניים אינם נתמכים.

שלושת ערכי אירועי החיישן האחרונים שדווחו על ידי החיישן מייצגים אם ערך התאוצה עבור צירי x, y ו-z נתמך. ערך של 1.0 מציין שהציר נתמך, וערך של 0 מציין שהוא לא נתמך. יצרני התקנים מזהים את הצירים הנתמכים בזמן הבנייה והערכים אינם משתנים במהלך זמן הריצה.

יצרני התקנים חייבים להגדיר את ערכי התאוצה עבור צירים שאינם בשימוש ל 0 , במקום לקבל ערכים לא מוגדרים.

גירוסקופ צירים מוגבלים

חיישנים פיזיים בבסיס: גירוסקופ

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) מחזיר חיישן שאינו מתעורר

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

שלושת ערכי אירועי החיישן האחרונים שדווחו על ידי החיישן מייצגים אם ערך המהירות הזוויתית עבור צירי x, y ו-z נתמך. ערך של 1.0 מציין שהציר נתמך, וערך של 0 מציין שהוא לא נתמך. יצרני התקנים מזהים את הצירים הנתמכים בזמן הבנייה והערכים אינם משתנים במהלך זמן הריצה.

יצרני התקנים חייבים להגדיר את ערכי המהירות הזוויתית עבור צירים שאינם בשימוש ל 0 .

צירים מוגבלים של מד תאוצה לא מכוילים

חיישנים פיזיים בבסיס: מד תאוצה

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) מחזיר חיישן שאינו מתעורר

חיישן לא מכויל בצירים מוגבלים של מד תאוצה שווה ערך ל- TYPE_ACCELEROMETER_UNCALIBRATED אך תומך במקרים שבהם אין תמיכה בציר אחד או שניים.

שלושת ערכי אירועי החיישן האחרונים שדווחו על ידי החיישן מייצגים אם ערכי התאוצה וההטיה עבור צירי x, y ו-z נתמכים. ערך של 1.0 מציין שהציר נתמך, וערך של 0 מציין שהוא לא נתמך. יצרני התקנים מזהים את הצירים הנתמכים בזמן הבנייה והערכים אינם משתנים במהלך זמן הריצה.

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

צירים מוגבלים של גירוסקופ לא מכוילים

חיישנים פיזיים בבסיס: גירוסקופ

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) מחזיר חיישן שאינו מתעורר

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

שלושת ערכי אירועי החיישן האחרונים שדווחו על ידי החיישן מייצגים אם ערכי המהירות הזוויתית והסחף עבור צירי x, y ו-z נתמכים. ערך של 1.0 מציין שהציר נתמך, וערך של 0 מציין שהוא לא נתמך. יצרני התקנים מזהים את הצירים הנתמכים בזמן הבנייה והערכים אינם משתנים במהלך זמן הריצה.

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

צירים מוגבלים מרוכבים IMU

חיישנים פיזיים בבסיס: כל שילוב של מד תאוצה 3 צירים, גירוסקופ 3 צירים, מד תאוצה 3 צירים לא מכויל וחיישני גירוסקופ 3 צירים לא מכוילים.

מצב דיווח: רציף

חיישן IMU עם צירים מוגבלים מורכבים שווה ערך לחיישן IMU עם צירים מוגבלים, אך במקום להיות נתמך ב-HAL, הוא ממיר את נתוני החיישן בעל 3 הצירים לגרסאות המקבילות של הצירים המוגבלים. חיישנים מרוכבים אלה מופעלים רק עבור התקני רכב.

הטבלה הבאה מציגה המרה לדוגמה ממד תאוצה סטנדרטי בן 3 צירים למד תאוצה עם צירים מוגבלים מורכבים.

ערכי SensorEvent עבור SENSOR_TYPE_ACCELEROMETER דוגמה SENSOR_TYPE_ACCELEROMETER SensorEvent Composite SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES אירוע חיישן
ערכים[0]

-0.065

-0.065

ערכים[1]

0.078

0.078

ערכים[2]

9.808

9.808

ערכים[3]

לא

1.0

ערכים[4]

לא

1.0

ערכים[5]

לא

1.0

חיישני רכב

חיישנים לתמיכה במקרים של שימוש ברכב.

כּוֹתֶרֶת

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

מצב דיווח: רציף

getDefaultSensor(SENSOR_TYPE_HEADING) מחזיר חיישן שאינו מתעורר

זמין מאנדרואיד 13, חיישן כיוון מודד את הכיוון שאליו המכשיר מצביע ביחס לצפון האמיתי במעלות. חיישן הכיוון כולל שני ערכי SensorEvent . אחד עבור כיוון המכשיר הנמדד ואחד עבור הדיוק של ערך הכותרת שסופק.

ערכי הכיוון המדווחים על ידי חיישן זה חייבים להיות בין 0.0 (כולל) ל 360.0 (בלעדי), כאשר 0 מציין צפון, 90 מזרח, 180 דרום ו 270 מערב.

הדיוק עבור חיישן זה מוגדר ב-68 אחוז ביטחון. במקרה שבו ההתפלגות הבסיסית היא נורמלית גאוסית, הדיוק הוא סטיית תקן אחת. לדוגמה, אם חיישן הכיוון מחזיר ערך כיוון של 60 מעלות וערך דיוק של 10 מעלות, יש סבירות של 68 אחוז שהכיוון האמיתי יהיה בין 50 מעלות ל-70 מעלות.