2017-01-01 7 views
1

Exoplayerデモアプリケーションを実行しているとき、デフォルトコントロールUIのSeekBar focusablefalseに設定されています。私はこれがアクセシビリティにはあまり適していないと思うので、私のカスタムUIではフォーカスを真に変更しました。Exoplayerシークバーが矢印キーで機能しない

ただし、矢印を使用しているときは、進行状況は変わりません。 SeekBarは更新されますが、更新されると最初の位置に戻ります。

また、テスト目的で別のSeekBarを作成しました。矢印キーを使用するとうまく動作します。

Exoplayer開発者がそれをfalseに設定する理由はありますか、それを修正する方法はありますか?

+0

Exoplayerはオープンソースですので、あなたは、コードを見て内側にそれを修正し、はいバック – Blundell

+0

に貢献して行くことができ、私はそれを変更しましたが、矢印キーの変更には反応しません。 – AMD

+0

@AMD SeekBarがタッチイベントやその他のイベントから変更されたかどうかを確認して、自分の答えを更新します。 – ataulm

答えて

2

開発者は、TalkBackのような非タッチ入力またはアクセシビリティサービスを使用してビデオを制御するためのSeekBarを適切なコンポーネントとは考えていない可能性があります。


少なくともデスクトップモードでは、キーボードで動作するものを間違いなく実装できます。例えば。 YouTube.comでは、SeekBarのフォーカスが合っていなくても、左右の矢印キーを使用して前後に移動することができます。

シークバータブキーで、あまりにも集中することができますが、それは同じUXを実現するのは難しいですので、Android上で、カーソルキーは、あまりにもフォーカス可能なコンポーネント間のをナビゲートする正当なアフォーダンスです。


一方、SeekBarコントロールには他にもアクセシビリティに関する考慮事項があります。コントロールの重要な部分はドラッグする機能です - TalkBackでドラッグするには2本の指が必要です。とにかくSeekBarは小さなコントロールなので、再生ヘッドを2本の指でドラッグするのはかなり難しく、再生できない場合はさらに難しくなります。再生ヘッドを参照してください。


SeekBarをフォーカス可能にしてキーボードの進捗状況を更新していたときに、なぜ反応しませんでしたか?それは合法的なシークとして扱う前にchecks for user touch input(これはいくつかの理由があります。ユーザがドラッグする間、絶えず追求していないので、プログラムによるSeekBarのアップデートはシークしません)。


ExoPlayerを使用して独自のUIを作成して、メディアのみを処理することをお勧めします。そうすれば、プレイヤーのUXとUIを明示的に制御できます。

TalkBackが有効になっている場合(たとえば、libraries which can aid with this)、YouTubeアプリでは異なるUIが表示され、画面上に前後のボタンをスキップしてオーバーレイします。


リファレンスソースコード:

+1

Exoplayerは既に前方および後方にスキップされているので、これは簡単です。この場合、アクセシビリティが有効かどうかを検出する方法を見つけるでしょう。有効になっている場合、またはデバイスがタッチスクリーンに対応していない場合は、画面上に2つのボタンを追加します。 – AMD

+0

は計画のように聞こえる - Novodaにはこのチェックを容易にするライブラリがあります。私の更新された答えを見てください。ユーザーが非タッチデバイスを使用しているかどうかのチェックはまだ含まれていませんが、 '!anyView.isInTouchMode()'がこれを実現します。 – ataulm

関連する問題