【发布时间】:2019-05-29 20:05:17
【问题描述】:
我正在开发一个 Android 库,它只是一个包装 ExoPlayer 的简单视频播放器。使用 Amazon Fire TV 时,我可以使用遥控器导航我的应用程序(方向键在我的视图中的元素之间切换)并且我可以控制播放器(播放/暂停按钮将切换播放状态,搜索按钮按预期工作) ....只要控制栏可见
3秒左右后控制栏自动隐藏,遥控器无响应
是否有适当的解决方法,或者我是否需要手动检测遥控器上的按键并显示控制栏?我觉得这是亚马逊的 ExoPlayer 端口应该解决的问题
更新
我扩展了PlayerView 类并覆盖了dispatchKeyEvent 方法以查看所看到的内容:
public class Test extends PlayerView {
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
Log.debug("***** KEY EVENT: " + String.valueOf(event.getKeyCode()) + " *********");
return true;
}
}
我注意到这样做并按下遥控器上的播放按钮:
- 当控制栏可见时,一个
KeyEvent的keyCode值为85被调度 - 当控制栏被隐藏时,此方法从未触发
我浏览了PlayerView 可用的方法,看看是否有任何帮助,但似乎没有任何价值:
-
setControllerAutoShow- 确定视频首次开始时是否显示控制栏 -
setControllerHideDuringAds- 确定在广告播放时控制栏是否可见 -
setControllerHideOnTouch- 与 FireTV 无关(无触摸事件),但如果您点击视频,则隐藏控制栏 -
setControllerHideTimeoutMs- 可以延迟控制栏的隐藏,但隐藏后不让我把它带回来 -
showController- 可以在代码中强制显示控制器,让我暂停视频,但我看不到按键事件,当按下遥控器上的按钮时,我无法正确调用它
最终,我只想让它表现得像 Netflix 或 Hulu 应用程序一样——控制栏会在几秒钟不活动后消失,但如果你按下暂停按钮,控制栏就会恢复。
【问题讨论】:
标签: android exoplayer amazon-fire-tv