检测中间(旋转)按钮点击 android waer
detect middle (rotary) button click on android waer
我正在为 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)-screen,
并且没有记录任何事件。
我可以捕捉到旋转滚动,但这是我想要使用的点击。
@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);
}
这是可能的,还是无法覆盖中间手表按钮的功能?
AFAIU 在 onKeyDown()
中按下 RSB 时应该得到 KEYCODE_HOME
作为按键事件。
如果是这种情况,则它仅由 Android 框架控制,应用程序无法对其执行任何操作。
这是官方描述
Key code constant: Home key. This key is handled by the framework and
is never delivered to applications.
https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME
我正在为 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)-screen, 并且没有记录任何事件。
我可以捕捉到旋转滚动,但这是我想要使用的点击。
@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);
}
这是可能的,还是无法覆盖中间手表按钮的功能?
AFAIU 在 onKeyDown()
中按下 RSB 时应该得到 KEYCODE_HOME
作为按键事件。
如果是这种情况,则它仅由 Android 框架控制,应用程序无法对其执行任何操作。
这是官方描述
Key code constant: Home key. This key is handled by the framework and is never delivered to applications.
https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME