בדרך כלל, יצרני המכשירים נחשבים לבעלים של הנכסים הפרטיים שנוצרים לכל מכשיר. לכן, פעולות ההנדסה שלהם מתמקדות בדרך כלל במכשיר ספציפי, והן לא מתמקדות כלל או כמעט בכלל בעקביות של מכשירים אחרים בסביבה העסקית.
בניגוד לכך, המפתחים שואפים ליצור אפליקציות שפועלות בכל הטלפונים עם Android בסביבה העסקית, ללא קשר למפרט הטכני של כל מכשיר. ההבדל בגישה הזו עלול לגרום לבעיה של פיצול, למשל, יכולות החומרה של טלפונים מסוימים לא תואמות לציפיות של מפתחי האפליקציות. לכן, אם ממשקי ה-API של הרטט פועלים בטלפונים מסוימים עם Android אבל לא באחרים, התוצאה היא סביבה עסקית לא עקבית. לכן, לתצורת החומרה יש תפקיד קריטי כדי להבטיח שהיצרנים יוכלו להטמיע ממשקי API פיזיים של Android בכל המכשירים.
בדף הזה מופיעה רשימת משימות מפורטת להגדרת תאימות לחומרה כדי שתוכלו להפיק את המקסימום מממשקי ה-API של Android לרטט.
באיור הבא מוצגת היצירה של ידע משותף בין יצרני המכשירים למפתחים, שלב קריטי ביצירת סביבה עסקית אחידה.
איור 1. העברת ידע בין יצרני מכשירים למפתחים
רשימת משימות להטמעת מגע
-
- רשימה של קבועים להטמעת משוב מישוש.
-
- המלצות למיפוי בין קבועים של ממשקי API ציבוריים (שנקראים placeholders במסגרת) לקבועים של HAL, שמטמיעים את ה-placeholders.
- למידע נוסף על התהליך, קראו את המאמר עקרונות עיצוב להנחיה של המיפוי המומלץ.
-
- הוראות לטירגוט של אפקטים של משוב מישוש. בעזרת ההוראות הבאות תוכלו לבצע בדיקות מהירות של החומרה.
בהמשך נרחיב על כל אחד מהשלבים האלה.
שלב 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
. מומלץ לעדכן את ההגדרות האישיות האלה כדי שהביצועים שלהן יהיו הכי טובים במכשירים כאלה.
EFFECT_CLICK
רטט של צורת גל נוצר באמצעות
VibrationEffect.createWaveform
והתזמונים שהוגדרו ב-frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
רטט של צורת גל שנוצר באמצעות
VibrationEffect.createWaveform
והזמנים שהוגדרו ב-frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
רטט של צורת גל שנוצר באמצעות
VibrationEffect.createWaveform
והזמנים (0, 30, 100, 30).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 העדכניים ביותר של משוב מישוש), מומלץ להטמיע את החומרה שלהם באמצעות המודל הזה.
- הטקסטורה והמשרעת הם המשתנים העיקריים במודל הזה.
כל ישות ב-HAL מייצגת מרקמים שונים של משוב מישוש. האמפליטודה של כל ישות HAL נשלטת על ידי גורם ההמרה (
מודל בדיד
מומלץ למפות את כל הקבועים הציבוריים שסופקו ב-API עם קבועי HAL מתאימים. כדי להתחיל בתהליך הזה, צריך לבדוק כמה צורות גל של משוב מישוש עם אמפליטודה בדידה המכשיר יכול להגדיר ב-HAL. שאלה ספציפית שמבוססת על הרעיון הזה נראית כך: כמה אפקטים של משוב מישוש (haptic) עם פולס יחיד עם הבדלים באמפליטודה שניתנים לזיהוי על ידי בני אדם אפשר להגדיר בטלפון? התשובה לשאלה הזו קובעת את המיפוי.
ההגדרה של קבועי HAL היא תהליך תלוי חומרה. לדוגמה, יכול להיות שטלפון ברמת הכניסה יכלול רק את יכולות החומרה ליצירת צורת גל אחת של משוב מישוש. מכשירים עם רכיבי חומרה מתקדמים יותר מייצרים מגוון רחב יותר של רמות אמפליטודה נפרדות, ואפשר להגדיר בהם כמה צורות גל של משוב מישוש ב-HAL. המיפוי הקבוע של HAL-API לוקח את קבוע ה-HAL (באמצעות משרעת ה-Medium כבסיס הבסיס) ואז קובע השפעות חזקות או חלשות יותר משם.
איור 5. טווח קבוע של HAL לפי משרעת
כשמגדירים את המספר של קבועי HAL עם משרעת מובחנים, אפשר למפות את קבועי HAL ו-API לפי מספר קבועי HAL. תהליך המיפוי הזה יכול לפלח קבוע API יחיד של דחף לשלוש קבוצות נפרדות של רמות משרעת. האופן שבו קבועי ה-API מחולקים לפלחים מבוסס על עקרונות UX של אירועי קלט נלווים. למידע נוסף, קראו את המאמר עיצוב ממשק משתמש של משוב מישוש.
איור 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 על סמך מספר הטקסטורות החזוניות השונות שהם רוצים לספק.
איור 7. טווח קבוע של HAL לפי מרקם (HAL_H0) וסולם אמפליטודה (S)
איור 8. מיפוי קבוע של HAL-API: מודל רציף
במודל הרציף, קבועי HAL שונים מייצגים טקסטורות שונות של משוב מישוש, ולא אמפליטודות שונות. גורם ההמרה (S
) יכול להגדיר את האמפליטודה. עם זאת, מאחר שהתפיסה של המרקם (למשל, חדות) קשורה לתפיסה של משך הזמן והאמפליטודה, מומלץ לשלב את המרקם עם גורם ההמרה (בתהליך התכנון של מיפוי HAL-API).
באיור 7 מוצגת מיפוי של קבועים על ידי הגדלת השונות מ-HAL אחד למספר רב של קבועי API עם יכולת התאמה לעוצמה.
איור 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
ביצוע הערכה סובייקטיבית
כדי לבצע בדיקה מהירה של עקביות, צריך לבצע קודם הערכה סובייקטיבית. מטרת ההערכה הסובייקטיבית היא לבחון את האמפליטודה של האפקטים ההדדיים כדי לקבוע אם המכשיר יכול ליצור אפקטים הדדיים עם אמפליטודות שאנשים יכולים לחוש.
שאלה ספציפית שמבוססת על הרעיון הזה נראית כך: האם המכשיר יכול ליצור אפקטים הקטפטיים מורגש למשתמשים כצפוי? התשובה לשאלה הזו תעזור לכם למנוע כשלים בחישה, כולל תחושות לא מורגשות שהמשתמשים לא יכולים לחוש, או תחושות לא רצויות שבהן צורות הגל לא יוצרות תבניות כמתוכנן.
ביצוע הערכה מתקדמת
מומלץ מאוד לבצע בדיקות איכות מתקדמות. הערכות איכות מתקדמות מתאפיינות במאפיינים כמותיים של אפקטים של משוב מגע, כדי להטמיע משוב מגע באיכות גבוהה. בסיום, יצרני המכשירים יוכלו לאבחן את סטטוס הרטט הנוכחי, וכך להגדיר יעדים לשיפור האיכות הכוללת. בדיקת החומרה