לחצנים פיזיים

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

באפליקציה שלכם תוכלו להקצות לחצנים רב-תכליתיים לפעולות. למשל, אפליקציית כושר יכול להתחיל או להשהות אימון באמצעות לחצנים רב-תכליתיים:

הערה: Wear OS 3.0 שומרת שני לחצנים למערכת ההפעלה, ואילו מערכת Wear OS 2.0 שומרת רק אפשרות אחת. כך תצטמצם מספר הלחצנים שאפשר להקצות פעולות ל.

לגבי תרחישים לדוגמה ושיקולי עיצוב מתאימים, קראו את עקרונות העיצוב של Wear OS.

במדריך הזה מוסבר איך לאחזר מידע על לחצנים רב-תכליתיים זמינים מכשיר ואיך לעבד לחיצות על לחצנים.

מטא-נתונים של לחצן

כדי לקבל מידע נוסף על הלחצנים במכשיר, צריך להשתמש ב-API שמוגדר ב קלט Wear ספריית AndroidX. מוסיפים את התלות הבאה בקובץ build.gradle של מודול האפליקציה:

dependencies {
implementation "androidx.wear:wear-input:1.0.0"
}

מספר הלחצנים

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

קודי מקשים ללחיצות על לחצנים

כל לחצן ממופה לקבוע int מתוך KeyEvent הכיתה, כפי שמוצג בטבלה הבאה:

לחצן אירוע מרכזי
לחצן רב-תכליתי 1 KEYCODE_STEM_1
לחצן רב-תכליתי 2 KEYCODE_STEM_2
לחצן רב-תכליתי 3 KEYCODE_STEM_3

הקוד לדוגמה הבא מראה איך למצוא את הלחצן הזמין. count:

Kotlin

val count = WearableButtons.getButtonCount(context)

if (count > 1) {
    // There are multifunction buttons available
}

val buttonInfo = WearableButtons.getButtonInfo(activity, KeyEvent.KEYCODE_STEM_1)

if (buttonInfo == null) {
    // KEYCODE_STEM_1 is unavailable
} else {
    // KEYCODE_STEM_1 is present on the device
}

Java

int count = WearableButtons.getButtonCount(context);

if (count > 1) {
  // There are multifunction buttons available
}

WearableButtons.ButtonInfo buttonInfo =
  WearableButtons.getButtonInfo(activity, KeyEvent.KEYCODE_STEM_1);

if (buttonInfo == null) {
  // KEYCODE_STEM_1 is unavailable
} else {
  // KEYCODE_STEM_1 is present on the device
}

לחיצות על הלחצן של נקודת האחיזה

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

  • KEYCODE_STEM_1
  • KEYCODE_STEM_2
  • KEYCODE_STEM_3

האפליקציה יכולה לקבל את קודי המפתח האלה ולהמיר אותם לפעולות ספציפיות בתוך האפליקציה.

כדי לטפל בלחיצה על לחצן, צריך להטמיע את onKeyDown().

לדוגמה, היישום הזה מגיב ללחיצות על לחצנים כדי לשלוט פעולות באפליקציה:

Kotlin

// Activity
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
    return if (event.repeatCount == 0) {
        when (keyCode) {
            KeyEvent.KEYCODE_STEM_1 -> {
                // Do stuff
                true
            }
            KeyEvent.KEYCODE_STEM_2 -> {
                // Do stuff
                true
            }
            KeyEvent.KEYCODE_STEM_3 -> {
                // Do stuff
                true
            }
            else -> {
                super.onKeyDown(keyCode, event)
            }
        }
    } else {
        super.onKeyDown(keyCode, event)
    }
}

Java

@Override
// Activity
public boolean onKeyDown(int keyCode, KeyEvent event){
  if (event.getRepeatCount() == 0) {
    if (keyCode == KeyEvent.KEYCODE_STEM_1) {
      // Do stuff
      return true;
    } else if (keyCode == KeyEvent.KEYCODE_STEM_2) {
      // Do stuff
      return true;
    } else if (keyCode == KeyEvent.KEYCODE_STEM_3) {
      // Do stuff
      return true;
    }
  }
  return super.onKeyDown(keyCode, event);
}

קובעים את מיקומי הלחצנים

בספריית AndroidX יש שתי שיטות שמתארות את המיקום של לחצן:

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

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