יישום Haptics

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

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

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

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

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

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

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

  1. יישם קבועים

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

  3. הערכת החומרה

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

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

שלב 1: יישם קבועים

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

תרשים זרימה של תהליך יישום ההפטיקה

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

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

איור 3. יישום פרימיטיבים

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

קבועים הפטיים מיקומים וסיכומים
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK מחלקה של VibrationEffect
קבועים הפטיים ב- 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
קבועים הפטיים ב- 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_END GESTURE_START

שיעור HapticFeedbackConstants
קבועים הפטיים ב- HapticFeedbackConstants מסייעים לאירועי קלט עם רכיבי ממשק משתמש מסוימים, כגון KEYBOARD_PRESS ו- KEYBOARD_RELEASE , אשר נקראים על ידי performHapticFeedback() .

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

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

  • דגם דיסקרטי (פשוט)

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

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

דגם דיסקרטי

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

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

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

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

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

מודל דיסקרטי למיפוי קבוע של 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, השתמש בשיטת Vibrator.hasAmplitudeControl() . התוצאה צריכה להיות true כדי להפעיל את VibrationEffect.createWaveform עם משרעת משתנה כמתוכנן.

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

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

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

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

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