בדף הזה מוצגים מיפויים מומלצים בין קבועים ציבוריים של HAL לבין קבועים של API. אם החומרה שנבדקה לא מיישמת את קבועי ה-HAL, צריך לעדכן את דפוסי החזרה למצב הקודם שמתוארים בדף יישום קבועים ופרימיטיבים כדי ליצור פלט דומה. המיפוי מתבצע בעזרת שני מודלים שונים שמוגדרים כברירת מחדל:
מודל נפרד (פשוט)
- המשתנה המרכזי במודל הזה הוא אמפליטודה. כל ישות ב-HAL מייצגת עוצמת רטט שונה.
- הדגם הזה הוא דרישה מינימלית להטמעה של ממשק משתמש בסיסי עם משוב מישוש.
- ממשק משתמש מתקדם יותר עם משוב מישוש דורש חומרה מתקדמת ומודל מתקדם (מודל רציף).
מודל רציף (מתקדם)
- המרקם והאמפליטודה הם המשתנים העיקריים במודל הזה. כל ישות ב-HAL מייצגת טקסטורות שונות של משוב הפטי. המשרעת של כל ישות HAL נשלטת על ידי מקדם קנה המידה (
S
). - המודל הזה דורש חומרה מתקדמת. אם יצרני ציוד מקורי רוצים להשתמש בחוויית משתמש מתקדמת של משוב הפטי עם
VibrationEffect.Composition
(כדי להפיק את המרב מ-API המשוב ההפטי העדכני), מומלץ להטמיע את החומרה שלהם באמצעות המודל הזה.
- המרקם והאמפליטודה הם המשתנים העיקריים במודל הזה. כל ישות ב-HAL מייצגת טקסטורות שונות של משוב הפטי. המשרעת של כל ישות HAL נשלטת על ידי מקדם קנה המידה (
מודל נפרד
מומלץ למפות את כל הקבועים הציבוריים שמופיעים ב-API לקבועים מתאימים של HAL. כדי להתחיל בתהליך הזה, צריך לברר כמה צורות גל של משוב מישוש עם אמפליטודה נפרדת המכשיר יכול להגדיר ב-HAL. שאלה ספציפית שמנוסחת סביב הרעיון הזה נראית כך: כמה אפקטים הפטיים של דחף יחיד עם הבדלים במשרעת שניתנים לתפיסה על ידי בני אדם אפשר להגדיר בטלפון שלי? התשובה לשאלה הזו קובעת את המיפוי.
הגדרת קבועי HAL היא תהליך שתלוי בחומרה. לדוגמה, יכול להיות שלטלפון ברמת הכניסה יש רק את היכולות של החומרה ליצירת צורת גל הפטי אחת. מכשירים עם רכיבי חומרה מתקדמים יותר יכולים ליצור מגוון רחב יותר של רמות אמפליטודה נפרדות, ולהגדיר כמה צורות גל של משוב הפטי ב-HAL. מיפוי קבוע של HAL-API לוקח את הקבוע של HAL (באמצעות אמפליטודה בינונית כבסיס), ואז מסדר אפקטים חזקים או חלשים יותר משם.
איור 14. טווח קבוע של HAL לפי אמפליטודה
כשמוגדר מספר הקבועים של HAL עם אמפליטודה נפרדת, הגיע הזמן למפות את הקבועים של HAL ו-API לפי מספר הקבועים של HAL. תהליך המיפוי הזה יכול לפלח קבוע יחיד של API של דחף לעד שלוש קבוצות נפרדות של רמות אמפליטודה. הדרך שבה קבועים של API מפולחים מבוססת על עקרונות UX לאירועי קלט נלווים. מידע נוסף זמין במאמר עיצוב חוויית משתמש עם תחושות מישוש.
איור 15. מיפוי קבוע של HAL-API: מודל נפרד
אם המכשיר תומך רק בשני קבועי HAL עם אמפליטודות נפרדות, כדאי למזג את קבועי ה-HAL של רמות האמפליטודה 'בינונית' ו'גבוהה'. דוגמה למיפוי בפועל: מיפוי של EFFECT_CLICK
ו-EFFECT_HEAVY_CLICK
לאותו קבוע HAL, שהוא קבוע HAL של רמת אמפליטודה בינונית. אם המכשיר תומך רק בקבוע HAL אחד עם אמפליטודה נפרדת, כדאי למזג את כל שלוש הרמות לרמה אחת.
מודל רציף
אפשר להשתמש במודל הרציף עם יכולת שינוי קנה מידה של עוצמת הקול כדי להגדיר קבועים של HAL. אפשר להחיל על קבועי ה-HAL (לדוגמה, HAL_H0
, HAL_H1
) גורם קנה מידה (S
) כדי ליצור את ה-HAL המותאם (HAL_H0
x S
). במקרה הזה, ה-HAL המותאם ממופה כדי להגדיר קבועי API (HAL_H0
x S1
= H0S1
= EFFECT_TICK
), כפי שמוצג באיור 16. באמצעות מדרגיות האמפליטודה של המודל הרציף, מכשיר יכול לאחסן מספר קטן של קבועים של HAL עם טקסטורות ייחודיות ולהוסיף וריאציות של אמפליטודה על ידי התאמת מקדם קנה המידה (S
). יצרני מכשירים יכולים להגדיר את מספר הקבועים של HAL על סמך מספר הטקסטורות השונות של משוב הפטי שהם רוצים לספק.
איור 16. טווח קבוע של HAL לפי טקסטורה (HAL_H0) וקנה מידה של אמפליטודה (S)
איור 17. מיפוי קבוע של HAL-API: מודל רציף
במודל הרציף, קבועים שונים של HAL מייצגים מרקמים שונים של משוב הפטי ולא אמפליטודות שונות. גורם קנה המידה (S
) יכול להגדיר את האמפליטודה. עם זאת, מכיוון שהתפיסה של המרקם (לדוגמה, חדות) קשורה לתפיסה של משך הזמן והאמפליטודה, מומלץ לשלב את המרקם ואת מקדם קנה המידה (בתהליך התכנון של מיפוי HAL-API).
איור 18 ממחיש מיפוי קבוע על ידי הגדלת השונות מקבוע HAL אחד להרבה קבועי API עם יכולת הרחבה של האמפליטודה.
איור 18. הגדלת השונות באמצעות יכולת התאמה לעומס של האמפליטודה
לכל הקבועים של API שניתנים להרחבה, כמו PRIMITIVE_TICK
ו-PRIMITIVE_CLICK
ב-VibrationEffect.Composition
, רמת האנרגיה של הקבוע של ה-API תלויה בפרמטר float scale
כשהקבוע של ה-API מוצהר באמצעות addPrimitive(int primitiveID, float scale,
int delay)
. אפשר לעצב את PRIMITIVE_TICK
ואת PRIMITIVE_CLICK
כך שיהיה ביניהם הבדל ברור באמצעות קבועים שונים של HAL. הגישה הזו מומלצת אם רוצים להוסיף וריאציה למרקם.