【问题标题】:How to disable Playback ControlGlue on Android TV app?如何在 Android TV 应用上禁用 Playback ControlGlue?
【发布时间】:2019-11-27 06:29:08
【问题描述】:

我想制作一个像传统电视一样的Android TV应用,当按下遥控器上的向上和向下按钮时,电视频道就会切换。我已经映射了 onKeyDown 监听器。但是,每次我按下按钮时,都会出现“播放控制胶水”。需要再按一次按键触发监听切换频道。

播放控制胶: https://developer.android.com/training/tv/playback/transport-controls

有什么办法可以关闭 控制胶水”不显示?由于我的应用程序播放直播,我不希望用户暂停视频,并且无法搜索。

另外,监听器如何不通过“控制胶水”而立即获得 keydown 事件?

谢谢。

附:我不熟悉Android开发。我正在修改 Kotlin 中的 TV 示例代码。

【问题讨论】:

标签: android kotlin android-tv


【解决方案1】:

如果你想在活动中处理关键事件,而不是通过控制胶水,你可以在你的活动中覆盖dispatchKeyEvent

像这样:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP 
            || event.geyKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) {
        //switch channel
        return true;
    }
    return super.dispatchKeyEvent(event);
}

【讨论】:

  • 虽然它在 AndroidStudio 中显示错误,但它可以工作。谢谢。 stackoverflow.com/questions/41150995/…
  • 我发现每次按键都会触发我的功能两次。 KeyEvent 是否包括上键和下键? github.com/y2kbug-hk/dev.thematrix.tvhk/blob/master/app/src/…
  • dispatchKeyEvent 在您按下一个键时会被多次触发。一次按下,然后多次按住按钮,最后一次释放按钮。您可以像 event.getAction() == KeyEvent.ACTION_DOWNKeyEvent.ACTION_UP 那样检查正在调度的事件。我建议在 ACTION_UP 上做出反应,但如果你想在 ACTION_DOWN 上做出反应,你可以检查它是否是像这样event.getRepeatCount() == 0 的初始按下。
猜你喜欢
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2019-04-19
  • 2019-06-24
  • 2015-01-24
相关资源
最近更新 更多