如何在 Android TV 应用上禁用 Playback ControlGlue?

Posted

技术标签:

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

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

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

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

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

谢谢。

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

【问题讨论】:

你在哪个类中覆盖onKeyDown @BenjaminBreiby on PlayBackActivity github.com/y2kbug-hk/dev.thematrix.tvhk/blob/master/app/src/… 【参考方案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 中显示错误,但它可以工作。谢谢。 ***.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 的初始按下。

以上是关于如何在 Android TV 应用上禁用 Playback ControlGlue?的主要内容,如果未能解决你的问题,请参考以下文章

如果应用程序使用网络浏览器链接,如何通过 Android TV 的 Google Play 商店资格?

被拒绝的应用 Google Play 上没有适用于 Android TV 的全尺寸应用横幅

应用被拒绝。适用于 Android TV 的 Google Play 资格问题

Android TV 模拟器是空白的。如何查看 Google Play Store 等应用?

如何使用 Intent 在 android TV 上启动 amazon prime video 应用程序

Android TV 应用无法安装在 Android TV 设备上