בדרך כלל במכשיר לביש יש כמה לחצנים פיזיים, שנקראים גם גבעולים. במכשירי Wear OS יש תמיד לפחות לחצן אחד: לחצן ההפעלה. בנוסף, יכול להיות שיש אפס או יותר כפתורים רב-תכליתיים. במכשירים מסוימים יש גם לחצן צד פיזי מסתובב.
באפליקציה, אפשר להקצות לחצנים רב-תכליתיים לפעולות שמתבצעות כשהאפליקציה פועלת בחזית. לדוגמה, אפליקציית כושר יכולה להפעיל או להשהות אימון באמצעות לחצנים רב-תכליתיים:
במאמר עקרונות העיצוב של Wear OS מפורטים תרחישי שימוש מתאימים ושיקולי עיצוב שכדאי להתחשב בהם.
במסמך הזה מוסבר איך לאחזר מידע על לחצנים רב-תכליתיים שזמינים במכשיר ואיך לעבד לחיצות על לחצנים.
מטא-נתונים של לחצנים
כדי לקבל מידע נוסף על הלחצנים במכשיר, אפשר להשתמש ב-API שמוגדר בספריית AndroidX Wear Input. מוסיפים את התלות הבאה לקובץ build.gradle של מודול האפליקציה:
dependencies {
implementation "androidx.wear:wear-input:1.2.0"
}
מספר הלחצנים
כדי לקבוע כמה לחצנים זמינים במכשיר, משתמשים בשיטה
WearableButtons.getButtonCount(). השיטה הזו כוללת את לחצן ההפעלה, כך שאם השיטה מחזירה ערך שגדול מאחד, יש לחצנים רב-תכליתיים שאפשר להשתמש בהם. כדי לקבל ספירה מדויקת של כפתורים רב-תכליתיים שאפשר להקצות להם פעולות, צריך להפחית אחד מהספירה, כי הכפתור הראשון הוא תמיד כפתור ההפעלה.
קודי מקשים ללחיצות על לחצנים
כל לחצן ממופה לקבוע int מהמחלקה KeyEvent, כמו שמוצג בטבלה הבאה:
| לחצן | KeyEvent |
|---|---|
| כפתור רב-תכליתי 1 | KEYCODE_STEM_1 |
| כפתור רב-תכליתי 2 | KEYCODE_STEM_2 |
| כפתור 3 רב-תכליתי | KEYCODE_STEM_3 |
בדוגמת הקוד הבאה אפשר לראות איך מקבלים את מספר הלחצנים הזמינים:
val count = WearableButtons.getButtonCount(context) if (count > 1) { Log.d(TAG, "More than one button available") } val buttonInfo = WearableButtons.getButtonInfo( activity, KeyEvent.KEYCODE_STEM_1 ) if (buttonInfo == null) { // KEYCODE_STEM_1 is unavailable Log.d(TAG, "KEYCODE_STEM_1 not available") } else { // KEYCODE_STEM_1 is present on the device Log.d(TAG, "KEYCODE_STEM_1 is present on the device") }
טיפול בלחיצות על לחצנים
יש כמה קודי מקשים אפשריים של כפתורים שהאפליקציה יכולה לטפל בהם:
KEYCODE_STEM_1.KEYCODE_STEM_2.
האפליקציה יכולה לקבל את קודי המקשים האלה ולהמיר אותם לפעולות ספציפיות בתוך האפליקציה.
כדי לטפל בלחיצה על לחצן, מטמיעים את ה-method
onKeyDown().
לדוגמה, ההטמעה הזו מגיבה ללחיצות על לחצנים כדי לשלוט בפעולות באפליקציה:
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (event?.repeatCount == 0) { when (keyCode) { KeyEvent.KEYCODE_STEM_1 -> { Log.d(TAG, "KEYCODE_STEM_1 pressed") true } KeyEvent.KEYCODE_STEM_2 -> { Log.d(TAG, "KEYCODE_STEM_2 pressed") true } else -> { super.onKeyDown(keyCode, event) } } } else { super.onKeyDown(keyCode, event) } }
קובעים את מיקומי הכפתורים
ספריית AndroidX מספקת שתי שיטות שמתארות את המיקום של לחצן:
-
WearableButtons.getButtonLabel()מחזירה מחרוזת מותאמת לשפה המקומית שמתארת את המיקום הכללי של הלחצן במכשיר. -
WearableButtons.getButtonIcon()מחזירה סמל שמייצג את המיקום הכללי של הלחצן במכשיר.
אם ממשקי ה-API האלה לא מתאימים לצרכים של האפליקציה, אפשר גם להשתמש ב-API של WearableButtons.getButtonInfo() כדי לקבל את המיקום של הלחצן במסך ולטפל בו בצורה מותאמת אישית יותר. מידע נוסף על ממשקי ה-API זמין במאמר בנושא הפניית Wear API.