Я занимаюсь разработкой приложения для Android Wear и использую аппаратные кнопки. Мне удается поймать кнопки с помощью переопределения onKeyDown:
public boolean onKeyDown(int keyCode, KeyEvent event){
Log.i("CLICK", Integer.toString(keyCode));
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);
}
Я также хотел бы поймать щелчок средней (поворотной) кнопки, но когда я нажимаю эту кнопку, часы возвращаются к стандартный экран «home» (watchface), и ни одно событие не регистрируется.
Мне удается поймать поворотную прокрутку, но я хочу использовать этот щелчок.
@Override
public boolean onGenericMotionEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_SCROLL && RotaryEncoder.isFromRotaryEncoder(ev)) {
// // Note that we negate the delta value here in order to get the right scroll direction.
// float delta = -RotaryEncoder.getRotaryAxisValue(ev)
// * RotaryEncoder.getScaledScrollFactor(getContext());
// scrollBy(0, Math.round(delta));
return true;
}
return super.onGenericMotionEvent(ev);
}
Возможно ли это, или невозможно переопределить функциональность средней кнопки часов?