为 android 电视应用程序使用遥控器
using remote control for android TV application
我正在开发 Android 电视应用程序
当我试图在真正的 Android 电视上测试它时
我无法使用遥控器按钮导航到任何按钮或任何东西
上、下、左、右。
我已经搜索过了,我发现我必须使用(启用方向键导航)但我不知道如何使用它,我没有找到它的任何代码或教程
我的应用程序非常简单。它使动态布局相互并排,每个布局只有一个按钮和一个回收视图。
默认情况下 Android 实现从布局分布推断的基本方向键导航。如果您主要使用列表或线性布局,它会工作得很好。
主要区别在于视图处于聚焦状态而不是选中状态,因此如果您使用自定义背景,即对于按钮,它可能看起来好像不起作用,但实际上它起作用了。
您可以使用键盘上的光标键在模拟器上试用。
或者,如果推断的导航不起作用,您可以为每个视图定义 nextFocusUp、Down、Left 和 Right。
官方文档上解释的很清楚:https://developer.android.com/training/tv/start/navigation.html
试试这个,
@Override
public boolean onKeyDown(int keyCode, KeyEvent events) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
break;
case KeyEvent.KEYCODE_DPAD_UP:
break;
case KeyEvent.FLAG_KEEP_TOUCH_MODE:
break;
}
return super.onKeyDown(keyCode, events);
}
如果 call 不是上面的 getInside,那么试试这个:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_DPAD_CENTER:
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
break;
case KeyEvent.KEYCODE_DPAD_UP:
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
break;
case KeyEvent.FLAG_KEEP_TOUCH_MODE:
break;
}
return super.dispatchKeyEvent(event);
}
我正在开发 Android 电视应用程序 当我试图在真正的 Android 电视上测试它时 我无法使用遥控器按钮导航到任何按钮或任何东西 上、下、左、右。
我已经搜索过了,我发现我必须使用(启用方向键导航)但我不知道如何使用它,我没有找到它的任何代码或教程 我的应用程序非常简单。它使动态布局相互并排,每个布局只有一个按钮和一个回收视图。
默认情况下 Android 实现从布局分布推断的基本方向键导航。如果您主要使用列表或线性布局,它会工作得很好。
主要区别在于视图处于聚焦状态而不是选中状态,因此如果您使用自定义背景,即对于按钮,它可能看起来好像不起作用,但实际上它起作用了。
您可以使用键盘上的光标键在模拟器上试用。
或者,如果推断的导航不起作用,您可以为每个视图定义 nextFocusUp、Down、Left 和 Right。
官方文档上解释的很清楚:https://developer.android.com/training/tv/start/navigation.html
试试这个,
@Override
public boolean onKeyDown(int keyCode, KeyEvent events) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
break;
case KeyEvent.KEYCODE_DPAD_UP:
break;
case KeyEvent.FLAG_KEEP_TOUCH_MODE:
break;
}
return super.onKeyDown(keyCode, events);
}
如果 call 不是上面的 getInside,那么试试这个:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_DPAD_CENTER:
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
break;
case KeyEvent.KEYCODE_DPAD_UP:
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
break;
case KeyEvent.FLAG_KEEP_TOUCH_MODE:
break;
}
return super.dispatchKeyEvent(event);
}