Doom Player改め、LVGL Playerに音量と画面輝度の設定画面を追加しました。STM32H7B3I-DKのDoom Playerでは、Music, Sound, Gameの選択画面において、音量調節のスライダーを用意していたのですが、DoomPlayer, Blueotth Player, Oscilloscope Musicの3つの機能を有するLVGL Playerでは、それぞれの機能毎に設定画面を設けていたのでは不便です。どの機能を使った場合でも、同じように操作できる設定画面が必要となります。
そこでスマホでコントロールパネル/コントロールセンターを引き出す操作に似せて、画面を上から下にスワイプすることで設定画面を表示するようにしてみました。具体的には、LVGLのジェスチャー検出機能を使ってスワイプ操作を検出し、下方向へのジェスチャーだった場合に、次のような設定画面に表示を切り替えています。アクティブなスクリーンオブジェクトに対してイベントコールバックを設定することで、画面上のどの箇所でスワイプを行なっても、ジェスチャー操作を検出することができます。
設定画面から戻るには、もちろん下から上へのスワイプ操作を検出して、元の画面に戻します。
Bluetoothのアイコン表示は、Bluetoothの接続状態を示すものであり、接続された場合にはアイコンが青く変化します。
青い状態でアイコンをタッチすると、接続を切断します。
ジェスチャーの検出は ほぼどんな画面を表示している時でも動作するのですが、例外としてスクロール可能な画面範囲では、スワイプ操作とスクロール操作の区別がつかないので、スクロール操作のイベントとして検出され、ジェスチャー操作としては認識されません。Music Playerの画面では、画面を下から上にスワイプすることで曲名リストの表示が行えますが、この機能はスクロール操作によって実現されているので、この画面ではジェスチャーの検出は行えません。そこで、スクロールイベントの検出処理部分で、下方向スクロールのイベントを検出して、設定画面への切り替えを行うこととしています。
Bluetoothの接続については、Doom PlayerとOscilloscope MusicではHIDプロファイルを使っており、現状ではBluetooth PlayerではA2DP/AVRCPプロファイルを使っていますが、HIDプロファイルはサポートできていません。そのため、Bluetooth Playerではゲームパッドを使っての画面操作が行えないという制限があります。HIDプロファイルとA2DP/AVRCPプロファイルを同時に並行して動くようにしたいところで、それに合わせて状態表示も改善したいところです。