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

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

  • מודל נפרד (פשוט)

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

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

מודל נפרד

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

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

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

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

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

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

איור 2. מיפוי קבוע של 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), כפי שמוצג באיור 3. באמצעות מדרגיות האמפליטודה של המודל הרציף, מכשיר יכול לאחסן מספר קטן של קבועי HAL עם טקסטורות ייחודיות, ולהוסיף וריאציות של אמפליטודה על ידי התאמת מקדם קנה המידה (S). יצרני מכשירים יכולים להגדיר את מספר קבועי ה-HAL על סמך מספר הטקסטורות ההפטיות השונות שהם רוצים לספק.

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

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

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

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

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

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

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

Increasing Varation
2

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

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