מיפוי קבועים בין HAL ל-API

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

  • מודל בדיד (פשוט)

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

    • המרקם והאמפליטודה הם המשתנים העיקריים של המודל הזה. כל ישות ב-HAL מייצגת מרקמים שונים של משוב מישוש. האמפליטודה של כל ישות HAL נשלטת על ידי גורם ההמרה (S).
    • הדגם הזה דורש חומרה מתקדמת. אם יצרני ציוד מקורי רוצים להשתמש בחוויית משתמש מתקדמת של משוב מישוש עם VibrationEffect.Composition (כדי להפיק את התועלת המרבית מ-APIs העדכניים ביותר של משוב מישוש), מומלץ להטמיע את החומרה שלהם באמצעות המודל הזה.

מודל בדיד

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

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

תרשים של טווח קבוע של HAL ואמפליטודות משוב

איור 14. טווח קבוע של HAL לפי משרעת

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

מודל בדיד למיפוי קבוע של HAL-API

איור 15. מיפוי קבוע של HAL-API: מודל בדיד

אם המכשיר תומך רק בשני ערכי HAL קבועים עם אמפליטודות נפרדות, כדאי למזג את ערכי HAL הקבועים ברמות האמפליטודה 'בינונית' ו'גבוהה'. דוגמה לכך היא מיפוי של EFFECT_CLICK ו-EFFECT_HEAVY_CLICK לאותה קבועה של HAL, שהיא קבועת HAL ברמת האמפליטודה הבינונית. אם המכשיר תומך רק בקבועה אחת של HAL עם אמפליטודה בדידה, כדאי למזג את כל שלוש הרמות לרמה אחת.

מודל רציף

אפשר להשתמש במודל הרציף עם יכולת התאמה לעוצמה כדי להגדיר קבועי HAL. אפשר להחיל גורם שינוי (S) על קבועי ה-HAL (למשל, HAL_H0,‏ HAL_H1) כדי ליצור את ה-HAL המשוער (HAL_H0 x S). במקרה כזה, ה-HAL המשוער ממופה כדי להגדיר קבועי API (HAL_H0 x S1 = H0S1 = EFFECT_TICK), כפי שמוצג באיור 16. באמצעות יכולת ההתאמה לעוצמה של המודל הרציף, המכשיר יכול לאחסן מספר קטן של קבועי HAL עם טקסטורות ייחודיות ולהוסיף וריאציות של עוצמה על ידי שינוי של גורם ההתאמה (S). יצרני המכשירים יכולים להגדיר את מספר קבועי ה-HAL על סמך מספר הטקסטורות החזוניות השונות שהם רוצים לספק.

טווח קבוע של HAL לפי טקסטורה ואמפליטודה

איור 16. טווח קבוע של HAL לפי מרקם (HAL_H0) וסולם אמפליטודה (S)

מודל רציף למיפוי קבוע של HAL-API

איור 17. מיפוי קבוע של HAL-API: מודל רציף

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

איור 18 ממחיש מיפוי של ערך קבוע על ידי הגדלת ההבדלים בין HAL אחד לבין הרבה ערכי API עם יכולת התאמה לעוצמה.

הגברת Varation
1

הגדלת וריאציה
2

איור 18. הגדלת הווריאציה באמצעות יכולת ההתאמה לעומס של Amplitude

לכל ערכי הקבועים של ממשקי ה-API שניתן להתאים אותם, כמו PRIMITIVE_TICK ו-PRIMITIVE_CLICK ב-VibrationEffect.Composition, רמת האנרגיה של ערך הקבוע של ממשק ה-API תלויה בפרמטר float scale כשמגדירים את ערך הקבוע של ממשק ה-API באמצעות addPrimitive(int primitiveID, float scale, int delay). אפשר להבדיל בבירור בין PRIMITIVE_TICK לבין PRIMITIVE_CLICK באמצעות קבועי HAL שונים. מומלץ להשתמש בגישה הזו אם רוצים להוסיף וריאציה למרקם.