קבועים ופרימיטיבים של משוב מישוש מוגדרים על ידי ה-HAL של הוויברטור וממופים על ידי מסגרת Android לממשקי API ציבוריים. מבצעים את הבדיקות הבאות כדי לקבוע אם המכשיר עומד בדרישות המינימום להטמעת משוב מישוש:
איור 2. הטמעת אפקטים
איור 3. הטמעת פרימיטיבים
הטמעת קבועים
מפתחים יכולים להשתמש בערכי קבועים של משוב פיזי ב-VibrationEffect באמצעות VibrationEffect.createPredefined(). כדאי לבדוק את סטטוס ההטמעה של ערכי הקבועים הבאים של משוב פיזי.
קבועים של משוב פיזי | מיקומים ותקצירים |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classקבועים של משוב מגע ב- VibrationEffect לא כוללים מושג של אירועי קלט, ואין להם רכיבי ממשק משתמש. במקום זאת, המשתנים הקבועים כוללים את הרעיון של רמות אנרגיה, כמו EFFECT_CLICK ו-EFFECT_HEAVY_CLICK , שנקראים על ידי
createPredefined() . |
הרטט החלופי שמתואר בהמשך מתבצע במכשירים שלא מטמיעים את הקבועים 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. הטמעת קבועים של משוב
מפתחים יכולים להשתמש בערכי הקבועים של המשוב הפיזי ב-HapticFeedbackConstants באמצעות View.performHapticFeedback(). כדאי לבדוק את הסטטוס של ערכי הקבועים הבאים של משוב ציבורי.
קבועים של משוב פיזי | מיקומים ותקצירים |
---|---|
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 המשתנים הקבועים של המשוב החזותי ב- HapticFeedbackConstants עוזרים לאירועי קלט עם רכיבי ממשק משתמש מסוימים, כמו KEYBOARD_PRESS ו-KEYBOARD_RELEASE , שנקראים על ידי performHapticFeedback() . |
הטמעת פרימיטיבים
לפרימיטיבים של משוב מישוש ב-VibrationEffect.Composition
יש עוצמה שניתן לשנות, והמפתחים יכולים להשתמש בהם באמצעות addPrimitive(int primitiveId, float scale, int delay)
.
אפשר לחלק את הפרימיטיבים לשתי קטגוריות:
פרימיטיבים קצרים: פרימטיבים עם משך קצר, בדרך כלל פחות מ-20 אלפיות שנייה. אלה הם
CLICK
, TICK
ו-LOW_TICK
.פרימיטיבים של ציוץ: פרימיטיבים עם תדירות ואמפליטודה משתנות, בדרך כלל עם משך ארוך יותר מפרימיטיבים קצרים. אלה הערכים
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
ו-SPIN
.
פרימיטיבים קצרים
אפשר לתאר פריימים ראשוניים קצרים באמצעות פרופיל האצה של הפלט של מנוע הרטט. התדירות המוחלטת שבה נעשה שימוש משתנה בכל רכיב פרימיטיבי, בהתאם לתדירות התהודה של המפעיל. מידע נוסף על הגדרת החומרה וכלים למדידת הפלט זמין במאמר הגדרת ציוד הבדיקה.
מדד איכות חשוב של רטט קצר הוא יחס הפולס לצלצול (PRR), שמוצג באיור 5. ה-PRR מוגדר כיחס בין הדופק הראשי, שמוגדר על ידי האות בחלון משך הזמן שבו האמפליטודה יורדת ל-10% מאמפליטודת השיא, לבין הדופק הרטטני, שמוגדר על ידי האות שבו האמפליטודה יורדת מ-10% מאמפליטודת השיא לפחות מ-1% מאמפליטודת השיא. הנוסחה לחישוב PRR היא:
מידע נוסף על PRR זמין במאמר ניתוח צורת הגל, ומידע נוסף על ניתוח והשוואה של תוצאות זמין במאמר השוואת תוצאות באמצעות מפת הביצועים.
איור 5. הגדרה של יחס הדופק לצלצול
אפשר להשתמש בפרימיטיבים קצרים כמשוב על קלט של משתמשים או להפעיל אותם בהרכבים ארוכים יותר כדי ליצור טקסטורות רכות. כלומר, בדרך כלל הן מופעלות לעיתים קרובות ומשוחקות ברצף מהיר. עוצמת האפקט של פרימיטיב קצר אחד יכולה להצטבר ולהשפיע על עוצמת האפקט הגדול יותר. לכן, צריך לבצע כיול של רכיב טיקים יחיד או רכיב טיקים עם תדירות נמוכה באמצעות קומפוזיציה גדולה יותר, למשל 100 טיקים רצופים.
קליק פרימיטיבי
האפקט הבסיסי של הקליק הוא אפקט חזק וברור, שפועל בדרך כלל קרוב לתדירות התהודה של המכשיר כדי להגיע לתפוקה מקסימלית בפרק זמן קצר. הוא חזק ועמוק יותר מהפרימיטיבים האחרים, ומבצע את הפעולות בעוצמה מקסימלית.
אם האפשרות הזו זמינה, כדאי להשתמש בהאצה מעל המהירות המותרת של המנוע בהתחלה ובבלימה פעילה בסוף כדי להגיע לזמן קצר של עלייה וירידה של המנוע. במנועים מסוימים, שימוש בגל מרובע במקום בגל סינוס יכול לאפשר תאוצה מהירה יותר. באיור 6 מוצג פרופיל דוגמה של האצה של פלט לרכיב קליק:
איור 6. דוגמה לפרופיל האצה של פלט לרכיב קליק פשוט
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 12 אלפיות שנייה מגבלה: פחות מ-30 אלפיות שנייה |
האצה של פלט שיא |
יעד: 2G מגבלה: יותר מ-1 GB |
תדירות | בערך בתדירות התהודה |
רכיב טיקט ראשוני (סימן טיקט בהיר)
האפקט הבסיסי של תיקתוק הוא אפקט קצר וחד, שעובד בדרך כלל בטווח תדרים גבוה יותר. אפשר לתאר את הרכיב הזה גם כקליק בעוצמה בינונית בתדירות גבוהה יותר עם זנב קצר. ההנחיות האלה רלוונטיות גם להשגת זמן עלייה קצר באמצעות מצב overdrive של המנוע או גל מרובע להתחלה הראשונית, ובריחום פעיל במיקום שבו הגל מתחיל לרדת. באיור 7 מוצג פרופיל דוגמה של האצה של פלט לפרימיטיב של תיקתוק:
איור 7. דוגמה לפרופיל האצה של פלט לרכיב טיקים (tick) בסיסי
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 5 אלפיות השנייה מגבלה: פחות מ-20 אלפיות השנייה |
האצה של פלט שיא |
יעד: מחצית מ- מגבלה: בין 0.5GB ל-1GB |
תדירות |
יעד: תדירות תהודה כפולה מגבלה: פחות מ-500 Hz |
רכיב פשוט של סימון זמן נמוך
הרכיב הבסיסי של קליק נמוך הוא גרסה רכה וחלשה יותר של קליק קל, שפועל בטווח תדרים נמוך יותר כדי להוסיף יותר גוף לאפקט. אפשר גם לתאר את הפרימיטיב הזה כקליק בעוצמה בינונית בתדירות נמוכה יותר, שנועד לשימוש חוזר למשוב דינמי. ההנחיות האלה רלוונטיות גם להשגת זמן עלייה קצר באמצעות מצב overdrive של המנוע או גל מרובע בתחילת הפעולה. באיור 8 מוצג פרופיל דוגמה של האצה של פלט לפרימיטיב של טיקים נמוכים:
איור 8. דוגמה לפרופיל האצה של פלט לפרימיטיב של טיקים נמוכים
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 12 אלפיות שנייה מגבלה: פחות מ-30 אלפיות שנייה |
האצה של פלט שיא |
יעד: 1/4 מ- מגבלה: בין 0.2G ל-0.5G |
תדירות |
יעד: 2/3 מתדירות התהודה מגבלה: פחות מ-100 Hz |
רכיבים בסיסיים של צפצופים
אפשר לתאר את רכיבי הצ'ירפ באמצעות אותות הקלט של רמת המתח ותדירות הרטט. האצה שהמנוע יכול לספק בטווחי תדרים שונים משתנה בהתאם לעקומת התגובה לתדר של המפעיל. צריך לשנות את טווחי התדרים ורמות המתח לפי מכשיר.
פונקציית התחלה איטית
העלייה האיטית היא תנועה איטית של תדירות ואמפליטודה כלפי מעלה, עם התחלה רכה ועוצמת רטט גוברת באופן עקבי במהלך התנועה. אפשר להטמיע אותו באמצעות סוויפ עקבי של האמפליטודה והתדר, באמצעות טווח תדרים נמוך יותר שפועל מחוץ לרזוננס. באיור 9 מוצגים הפרמטרים של הקלט ופרופיל דוגמה של האצת הפלט להטמעה הזו. (הקו האדום תואם לתוויות האמפליטודה בצד ימין, והוא מייצג את האופן שבו אמפליטודת הרטט משתנה עם הזמן. הקו הכחול תואם לתוויות התדירות שמשמאל, והוא מייצג את האופן שבו תדירות הרטט משתנה לאורך זמן).
איור 9. פרמטרים של קלט ודוגמה לפרופיל האצה של פלט לפרימיטיב של עלייה איטית
אם תגובת התדר של המנוע מוגבלת (לא חזקה מספיק מחוץ לתדר התהודה שלו), אפשר להשתמש בהטמעה חלופית של סריקה בסינוס מ-1/2x עד 1x תדר התהודה. תהודת המנוע תורמת להגיע לשיא האות בסוף.
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 500 אלפיות השנייה סבילות: 20 אלפיות שנייה |
האצה של פלט שיא |
יעד: 0.5 G מגבלה: בין 0.5GB ל-1GB |
תדירות |
יעד: 1/2 עד 2/3 מתדר התהודה חלופה: 1/2 עד תדר התהודה |
פונקציית התחלה מהירה
העלייה המהירה היא תנועה מהירה יותר של תדירות ואמפליטודה כלפי מעלה, עם התחלה רכה ועוצמת רטט גוברת באופן עקבי במהלך התנועה. יעדי התדר של הרטט והתאוצה של הפלט צריכים להיות זהים ליעד של העלייה האיטית, תוך זמן קצר יותר. באיור 10 מוצגים הפרמטרים של קלט הרטט ופרופיל דוגמה של תאוצה של פלט לפרימיטיב של עלייה איטית. (הקו האדום תואם לתוויות האמפליטודה בצד ימין, והוא מייצג את האופן שבו אמפליטודת הרטט משתנה עם הזמן. הקו הכחול תואם לתוויות התדירות בצד שמאל, והוא מייצג את האופן שבו תדירות הרטט משתנה לאורך זמן).
איור 10. פרמטרים של קלט ודוגמה לפרופיל האצה של פלט לרכיב 'עלייה מהירה'
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 150 אלפיות השנייה סבילות: 20 אלפיות השנייה |
האצה של פלט שיא |
יעד: זהה ל- מגבלה: זהה ל- |
תדירות |
יעד: זהה ל- חלופה: בדיוק כמו במלון |
פונקציית ירידה מהירה
הירידה המהירה היא תנועה מהירה של תדר ואמפליטודה כלפי מטה עם התחלה רכה. אפשר להשתמש בתדירות גבוהה יותר כנקודת ההתחלה בזמן שהמנוע עולה בהדרגה כדי להגיע לאופקטימל של האצה הפלט. התדר צריך לרדת באופן עקבי במהלך הסריקה, גם במהלך זמן העלייה. באיור 11 מוצגים הפרמטרים של הקלט ופרופיל האצה לדוגמה של הפלט בהטמעה הזו. (הקו האדום תואם לתוויות האמפליטודה בצד ימין, והוא מייצג את האופן שבו אמפליטודת הרטט משתנה עם הזמן. הקו הכחול תואם לתוויות התדירות בצד שמאל, והוא מייצג את האופן שבו תדירות הרטט משתנה לאורך זמן).
איור 11. פרמטרים של קלט ודוגמה לפרופיל האצה של פלט לפרימיטיב של ירידה מהירה
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 100 אלפיות השנייה סבילות: 20 אלפיות שנייה |
האצה של פלט שיא |
יעד: 1 G מגבלה: בין 0.5GB ל-2GB |
תדירות |
יעד: פי 2 עד פי 1 מתדירות התהודה |
פונקציית Thud
חבטה היא אפקט חבטה נמוך ומקפיץ, שמחקה את התחושה הפיזית של דפיקה על עץ חלול. הרכיב הזה פועל בטווח תדרים נמוך, בדומה לרכיב ה-low tick, כדי להוסיף גוף לאפקט. אפשר להטמיע את פרימיטיב הקול העמוק כתנועה ירידה של תדירות ואמפליטודה בטווח תדר נמוך יותר (רצוי פחות מ-100 Hz). באיור 12 מוצגים הפרמטרים של הקלט ופרופיל דוגמה של האצת הפלט להטמעה הזו. (הקו האדום תואם לתוויות האמפליטודה בצד ימין, והוא מייצג את האופן שבו אמפליטודת הרטט משתנה עם הזמן. הקו הכחול תואם לתוויות התדירות בצד שמאל, והוא מייצג את האופן שבו תדירות הרטט משתנה לאורך זמן).
איור 12. פרמטרים של קלט ודוגמה לפרופיל האצה של פלט לפרימיטיב של חבטה
אם תגובת התדר של המנוע מוגבלת, אפשר להתחיל עם אות נהיגה בעוצמה מלאה בתדר הרטט ולרדת לתדר הנמוך ביותר שעדיין ניתן לזהות. כדי שהרטט ייגרם, יכול להיות שיהיה צורך להגביר את עוצמת האות במהירות הנמוכה יותר.
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 300 אלפיות שנייה סבילות: 20 אלפיות שנייה |
האצה של פלט שיא |
יעד: 0.25 G מגבלה: בין 0.2G ל-0.5G |
תדירות |
יעד: 1/2 עד 1/3 מתדירות התהודה חלופה: 1x עד 1/2 מתדירות התהודה |
פונקציית Spin ראשונית
הסיבוב מדמה תנועה מהירה למעלה ולמטה עם קצת הדגשה במרכז. אפשר להטמיע את הספין על ידי סריקה של המשרעת והתדירות בנפרד, בכיוונים מנוגדים, ולאחר מכן תנועה הפוכה. חשוב להשתמש בטווח תדרים נמוך יותר (רצוי פחות מ-100 Hz). באיור 13 מוצגים הפרמטרים של הקלט ופרופיל לדוגמה של האצת הפלט בהטמעה הזו. (הקו האדום תואם לתוויות האמפליטודה בצד ימין, והוא מייצג את האופן שבו אמפליטודת הרטט משתנה עם הזמן. הקו הכחול תואם לתוויות התדירות בצד שמאל, והוא מייצג את האופן שבו תדירות הרטט משתנה לאורך זמן).
מומלץ להפעיל את פונקציית ה-spin פרימיטיבית פעמיים ברציפות, או שלוש פעמים בקומפוזיציות, כדי ליצור תחושה של סיבוב ואי יציבות.
אם תגובת התדר של המנוע מוגבלת, אפשר להשתמש בהטמעה חלופית של סוויפ סינוס מהיר מ-1/2x עד 1x תדר התהודה ובחזרה. תהודת המנוע יוצרת באופן אוטומטי אירוע הדגשה באמצע האות.
איור 13. פרמטרים של קלט ודוגמה לפרופיל האצה של פלט לפרימיטיב של סיבוב
פרמטר | הנחיה |
---|---|
משך הזמן |
יעד: 150 אלפיות השנייה סבילות: 20 אלפיות השנייה |
האצה של פלט שיא |
יעד: 0.5 G מגבלה: בין 0.25GB ל-0.75GB |
תדירות |
יעד: 2/3 עד 1/3, ואז חזרה ל-1/2 מתדירות התהודה חלופה: 2/3 עד 1x, ואז חזרה ל-1/2 מתדירות התהודה |