Exoplayer 搜索栏不适用于方向键

Exoplayer seekbar does not work with arrow keys

当运行 Exoplayer 演示应用程序时,默认控件ui 已将SeekBar focusable 设置为false。我认为这不利于可访问性,因此在我的自定义 UI 中,我将 focusable 更改为 true。

但是,使用箭头时,进度不会改变。 SeekBar 得到更新,但一旦更新就回到初始位置。

我还创建了另一个 SeekBar 用于测试目的,并且使用箭头键工作正常。

Exoplayer 开发人员将其设置为 false 是否有任何原因,或者是否有解决方法?

开发人员可能不认为 SeekBar 是使用非触摸输入或 TalkBack 等辅助功能服务来控制视频的合适组件。


你绝对可以实现一些与键盘一起工作的东西,至少对于桌面模式。例如。 YouTube.com 将允许用户使用 left/right 箭头键搜索 back/forward,即使 SeekBar 未获得焦点。

SeekBar 也可以 使用 Tab 键聚焦,但在 Android 上,光标键是在 [=] 之间导航的合法功能41=] 也是可聚焦的组件,因此更难实现相同的用户体验。


另一方面,对于 SeekBar 控件,您还有其他可访问性注意事项。控件的一个关键部分是拖动功能 - 使用 TalkBack 时,您需要两根手指才能拖动。由于 SeekBar 无论如何都是一个小控件,因此很难用两根手指拖动播放头,如果看不到看到 播放头,那就更难了。


为什么当您将 SeekBar 设置为可聚焦并使用键盘更新进度时它没有反应?它 checks for user touch input 在将其视为合法搜索之前(我想这有几个原因,包括在用户拖动时不不断搜索,因此程序化的 SeekBar 更新不会触发进一步的搜索)。


建议您使用 ExoPlayer 创建自己的 UI 以仅处理媒体。这样您就可以明确控制播放器的用户体验和 UI。

例如,在 YouTube 应用程序中,如果启用了 TalkBack(有 libraries which can aid with this),它会显示不同的 UI,并在屏幕上叠加跳过 backwards/forwards 按钮。


参考源码: