בדרך כלל במכשיר לביש יש כמה לחצנים פיזיים, שנקראים גם גבעולים. במכשירי 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.