הטמעת המשוב הפיזי

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

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

בדף הזה מופיעה רשימת משימות מפורטת להגדרת תאימות לחומרה כדי שתוכלו להפיק את המקסימום מממשקי ה-API של Android לרטט.

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

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

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

רשימת משימות להטמעת מגע

  1. הטמעת קבועים

    • רשימה של קבועים להטמעת משוב מישוש.
  2. קבועי מפה בין HAL ל-API

  3. בדיקת החומרה

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

בהמשך נרחיב על כל אחד מהשלבים האלה.

שלב 1: הטמעת קבועים

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

תרשים זרימה של תהליך ההטמעה של משוב הרטט

איור 2. יישום אפקטים

תרשים זרימה של השלבים להטמעת פרימיטיבים

איור 3. הטמעת פרימיטיבים

בודקים את סטטוס ההטמעה של הקבועים הבאים של משוב מישוש.

קבועים פיזים מיקומים ותקצירים
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK VibrationEffect class
קבועים פיזיים ב-VibrationEffect לא כוללים שום סימון של אירועי קלט ואין בהם רכיבים בממשק המשתמש. במקום זאת, המשתנים הקבועים כוללים את הרעיון של רמות אנרגיה, כמו EFFECT_CLICK ו-EFFECT_HEAVY_CLICK, שנקראים על ידי createPredefined().
PRIMITIVE_TICK, PRIMITIVE_CLICK, PRIMITIVE_LOW_TICK>, PRIMITIVE_SLOW_RISE, PRIMITIVE_QUICK_RISE, PRIMITIVE_QUICK_FALL, PRIMITIVE_SPIN, PRIMITIVE_THUD VibrationEffect.Composition class
קבועים של משוב מישוש ב-VibrationEffect.Composition יכולים להיות עם עוצמה ניתנת להתאמה, והם נקראים על ידי addPrimitive(int primitiveId, float scale, int delay).

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

  1. EFFECT_CLICK

    רטט של צורת גל נוצר באמצעות VibrationEffect.createWaveform והתזמונים שהוגדרו ב-frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.

  2. EFFECT_HEAVY_CLICK

    רטט של צורת גל שנוצר באמצעות VibrationEffect.createWaveform והזמנים שהוגדרו ב-frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern.

  3. EFFECT_DOUBLE_CLICK

    רטט של צורת גל שנוצר באמצעות VibrationEffect.createWaveform והזמנים (0, 30, 100, 30).

  4. EFFECT_TICK

    רטט של צורת גל שנוצר באמצעות VibrationEffect.createWaveform והזמנים שהוגדרו ב-frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.

תרשים זרימה של שלבים לבדיקת המשוב הפיזי

איור 4. יישום של קבועי משוב

כדאי לבדוק את הסטטוס של הקבועים הבאים של משוב ציבורי.

קבועים של משוב פיזי מיקומים ותקצירים
CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, GESTURE_START, GESTURE_END HapticFeedbackConstants class
קבועים פיזיים ב- HapticFeedbackConstants מסייעים באירועי קלט עם רכיבים מסוימים בממשק המשתמש, כמו KEYBOARD_PRESS ו-KEYBOARD_RELEASE, שנקראים על ידי performHapticFeedback().

שלב 2: מיפוי קבוע בין HAL ל-API

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

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

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

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

מודל בדיד

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

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

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

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

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

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

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

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

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

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

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

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

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

הגברת הגרסה 1

עלייה בתנודות 2

איור 9. הגדלת הווריאציה עם מדרגיות של משרעת

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

שלב 3: הערכת החומרה

הערכת החומרה כוללת הגדרה של שלוש השפעות הלטקס, שמסומנות בתור השפעות 1, 2 ו-3 במסגרת ההערכה הספציפית הזו.

אפקט 1: קבועים פיזיים קצרים מוגדרים מראש

הקבוע VibrationEffect.EFFECT_CLICK הוא האפקט הבסיסי או המכנה המשותף במיפוי HAL-API שצוין בשלב 2. הוא ממופה לאפקט הנפוץ ביותר, HapticFeedbackConstants.KEYBOARD_PRESS. הערכת ההשפעה הזו עוזרת לקבוע את מידת הנכונות של מכשיר היעד לרטט ברור.

אפקט 2: אפקט רטט קצר בהתאמה אישית

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

גל של אפקט פיזי קצר בהתאמה אישית

איור 10. אפקט רטט קצר בהתאמה אישית

אפקט 3: אפקט מגע ארוך בהתאמה אישית עם שינוי באמפליטודה

הקבוע VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) מיועד לאפקטים ארוכים בהתאמה אישית עם וריאציה של משרעת. היכולת ליצור אמפליטודות שונות להשפעות הפיזיות בהתאמה אישית היא אחד מהאינדיקטורים להערכת היכולות של המכשיר לקבלת משוב פיזי עשיר. הערכים המומלצים timings [] ו-amplitudes [] הם {500, 500} ו-{128, 255}, בהתאמה, וזה מצביע על מגמת עלייה של משרעת מ-50% ל-100%, עם קצב דגימה של 500 אלפיות השנייה.

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

איור 11. אפקט רטט ארוך בהתאמה אישית עם שינוי באמפליטודה

כדי לבדוק את יכולות החומרה של בקרת משרעת באפקט 3, משתמשים ב-method Vibrator.hasAmplitudeControl(). התוצאה צריכה להיות true כדי להפעיל את VibrationEffect.createWaveform עם משרעת שונה כמתוכנן.

תרשים זרימה של הערכת ההשפעה החזותית הסובייקטיבית

איור 12. הערכת הנושא של האפקט הפיזי 1, 2 ו-3

ביצוע הערכה סובייקטיבית

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

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

ביצוע הערכה מתקדמת

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