Android TV 模拟器无法识别媒体键事件

Posted

技术标签:

【中文标题】Android TV 模拟器无法识别媒体键事件【英文标题】:Android TV emulator not recognizing media key events 【发布时间】:2019-08-07 01:02:42 【问题描述】:

我的活动中有这个事件处理程序:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) 

    switch (keyCode) 
        case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
            //do something
            return true;
        case KeyEvent.KEYCODE_MEDIA_REWIND:
            //do something
            return true;

        default:
            return super.onKeyUp(keyCode, event);
    

android TV 设备模拟器中调试时,当我按下方向键扩展控制中的按钮时,我可以看到 KEYCODE_DPAD_LEFT 和 KEYCODE_MEDIA_PLAY_PAUSE。

但是当我按下“快进”或“快退”媒体键时,按键向上事件被触发,但键码“无法识别”。

KeyEvent action=ACTION_UP, keyCode=KEYCODE_UNKNOWN, scanCode=208...

这是 Google 的错误还是我在这里做错了什么?

【问题讨论】:

这里只是在黑暗中拍摄,但您是否尝试过检查提供给 onKeyUp 的 keyCode 与 KeyEvent.keyCodeToString(keyCode)?您也可以尝试覆盖dispatchKeyEvent,看看那里的 KeyEvent 是否也搞砸了。 keyCode 返回是 KEYCODE_UNKNOWN。 “扫码”是 208 问题解决了吗?即使在 FireStick 我得到 KEYCODE_UNKNOWN 不,抱歉,从来没有 【参考方案1】:

看来 TV Emulator 实际上并没有在此处提供正确的 keycode,这似乎是一个错误。

你可以通过命令行模拟这个:

adb shell input dpad keyevent 90

这将触发KEYCODE_MEDIA_FAST_FORWARD 按钮。

【讨论】:

以上是关于Android TV 模拟器无法识别媒体键事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android TV 上实现 TvView?

Flutter 应用程序在 Android TV 上安装但无法打开,为啥?

安卓TV开发 Android模拟事件 遥控器变身成鼠标来操作TV

Android TV开发焦点移动源码分析

android studio无法识别模拟器问题解决

Android Studio 无法识别正在运行的模拟器