使用 java 在 android 电视网络视图应用程序中重新映射 "select_button" 的物理后退按钮
Remap physical back button for "select_button" in android tv webvew application with java
我是一名法国开发人员,我正在使用 java.
在网络视图中创建一个关于云游戏的 android 电视应用程序
我的应用程序直接在 web 视图中启动游戏流,在全屏上,控制器的物理按钮正在与游戏一起工作,除了“查看按钮”和“后退按钮”。
这个“查看按钮”或者如果您喜欢“select 按钮”是 android 电视返回主屏幕的按钮。所以我必须覆盖这个后退按钮,我想用一个“select 按钮”替换它,它可以与游戏交互以显示地图和库存,就像在 rpg 游戏中一样。
我知道名称将是“button_select”,用于与 PC 游戏互动。所以现在在 android 电视中,我将始终重定向到主页。
这是我的代码示例。
public class MainActivity extends AppCompatActivity {
@Override
public void onBackPressed() {
return;
}
有了这个覆盖,后退按钮现在完全禁用,我想更换它或调用“button_select”。我读了一些关于“处理程序”的内容,也许这就是解决方案。
编辑 2021 年 6 月 16 日
我测试了很多代码,但没有任何效果。
这个
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
keyCode = KeyEvent.KEYCODE_BUTTON_SELECT;
}
return super.onKeyDown(keyCode, event);
}
及其变体
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (action == KeyEvent.ACTION_DOWN ){
//Do something in the back button
keyCode = KeyEvent.KEYCODE_BUTTON_SELECT;
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
在游戏中,后退按钮被禁用,但“keycode_button_select”不与游戏互动。空无一物。我用“keycode button_start”测试同样的东西。
我测试了 android 电视的应用程序按钮映射器,有一个使用 adb 的自定义键码选项,但在游戏中没有任何作用。
https://play.google.com/store/apps/details?id=flar2.homebutton&hl=fr&gl=US
因此,通过代码或应用程序,目前没有任何效果,我不想为此强制使用“root 模式”。也许我只需要在 java 中实现一个游戏手柄插件。我不知道...
编辑 21 年 6 月 18 日
我可以捕获“后退按钮”并显示出现在屏幕中间的对话框警告。但是之后的动作暂时没有效果。我测试了“dispatchEvent”,但目前没有成功。我将测试“机器人”功能。也许“robot”和“dispatchEvent”会一起工作。
感谢您的帮助。
我假设你想在用户按下 back button
时调用 button_select
键。
在这种情况下,创建一个在按下后退按钮时调用的方法。并从 onBackPressed
方法中调用该方法。
例如:
public void callButtonSelectKey() {
//This could be done in either ways.
//1.
val i = Instrumentation()
i.sendKeyDownUpSync(KeyEvent.KEYCODE_BUTTON_SELECT)
//2.
val keyEventDown = KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_SELECT)
val keyEventUp = KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BUTTON_SELECT)
dispatchKeyEvent(keyEventDown)
dispatchKeyEvent(keyEventUp)
}
@Override
public void onBackPressed() {
methodToCallUponBackPress();
return;
}
现在当用户按下后退按钮时,它将调用 callButtonSelectKey
方法调用“button_select”键。 (即将后退按钮重新映射到 button_select)
如果您还有其他问题,请告诉我。
编辑
在面向对象语言中,重写 class(在本例中为 KeyEvent
)字段(在本例中为 keycode
)不会执行任何操作。喜欢下面的代码:
//Do something in the back button
keyCode = KeyEvent.KEYCODE_BUTTON_SELECT;
当你收到KEYCODE_BACK
的事件时调用button_select
,你应该手动调用调用Key Event的方法,这里是我之前给你的方法dispatchKeyEvent
。
所以你应该把你的改变变成这样:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
//This could be done in either ways.
//1.
val i = Instrumentation()
i.sendKeyDownUpSync(KeyEvent.KEYCODE_BUTTON_SELECT)
//2.
val keyEventDown = KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_SELECT)
val keyEventUp = KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BUTTON_SELECT)
dispatchKeyEvent(keyEventDown)
dispatchKeyEvent(keyEventUp)
}
return super.onKeyDown(keyCode, event); //Edit this return statement if you want to ignore a keypress.
}
我是一名法国开发人员,我正在使用 java.
在网络视图中创建一个关于云游戏的 android 电视应用程序我的应用程序直接在 web 视图中启动游戏流,在全屏上,控制器的物理按钮正在与游戏一起工作,除了“查看按钮”和“后退按钮”。 这个“查看按钮”或者如果您喜欢“select 按钮”是 android 电视返回主屏幕的按钮。所以我必须覆盖这个后退按钮,我想用一个“select 按钮”替换它,它可以与游戏交互以显示地图和库存,就像在 rpg 游戏中一样。
我知道名称将是“button_select”,用于与 PC 游戏互动。所以现在在 android 电视中,我将始终重定向到主页。
这是我的代码示例。
public class MainActivity extends AppCompatActivity {
@Override
public void onBackPressed() {
return;
}
有了这个覆盖,后退按钮现在完全禁用,我想更换它或调用“button_select”。我读了一些关于“处理程序”的内容,也许这就是解决方案。
编辑 2021 年 6 月 16 日
我测试了很多代码,但没有任何效果。
这个
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
keyCode = KeyEvent.KEYCODE_BUTTON_SELECT;
}
return super.onKeyDown(keyCode, event);
}
及其变体
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (action == KeyEvent.ACTION_DOWN ){
//Do something in the back button
keyCode = KeyEvent.KEYCODE_BUTTON_SELECT;
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
在游戏中,后退按钮被禁用,但“keycode_button_select”不与游戏互动。空无一物。我用“keycode button_start”测试同样的东西。
我测试了 android 电视的应用程序按钮映射器,有一个使用 adb 的自定义键码选项,但在游戏中没有任何作用。
https://play.google.com/store/apps/details?id=flar2.homebutton&hl=fr&gl=US
因此,通过代码或应用程序,目前没有任何效果,我不想为此强制使用“root 模式”。也许我只需要在 java 中实现一个游戏手柄插件。我不知道...
编辑 21 年 6 月 18 日
我可以捕获“后退按钮”并显示出现在屏幕中间的对话框警告。但是之后的动作暂时没有效果。我测试了“dispatchEvent”,但目前没有成功。我将测试“机器人”功能。也许“robot”和“dispatchEvent”会一起工作。
感谢您的帮助。
我假设你想在用户按下 back button
时调用 button_select
键。
在这种情况下,创建一个在按下后退按钮时调用的方法。并从 onBackPressed
方法中调用该方法。
例如:
public void callButtonSelectKey() {
//This could be done in either ways.
//1.
val i = Instrumentation()
i.sendKeyDownUpSync(KeyEvent.KEYCODE_BUTTON_SELECT)
//2.
val keyEventDown = KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_SELECT)
val keyEventUp = KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BUTTON_SELECT)
dispatchKeyEvent(keyEventDown)
dispatchKeyEvent(keyEventUp)
}
@Override
public void onBackPressed() {
methodToCallUponBackPress();
return;
}
现在当用户按下后退按钮时,它将调用 callButtonSelectKey
方法调用“button_select”键。 (即将后退按钮重新映射到 button_select)
如果您还有其他问题,请告诉我。
编辑
在面向对象语言中,重写 class(在本例中为 KeyEvent
)字段(在本例中为 keycode
)不会执行任何操作。喜欢下面的代码:
//Do something in the back button
keyCode = KeyEvent.KEYCODE_BUTTON_SELECT;
当你收到KEYCODE_BACK
的事件时调用button_select
,你应该手动调用调用Key Event的方法,这里是我之前给你的方法dispatchKeyEvent
。
所以你应该把你的改变变成这样:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
//This could be done in either ways.
//1.
val i = Instrumentation()
i.sendKeyDownUpSync(KeyEvent.KEYCODE_BUTTON_SELECT)
//2.
val keyEventDown = KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_SELECT)
val keyEventUp = KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BUTTON_SELECT)
dispatchKeyEvent(keyEventDown)
dispatchKeyEvent(keyEventUp)
}
return super.onKeyDown(keyCode, event); //Edit this return statement if you want to ignore a keypress.
}