折りたたみロックの動作設定

OEM は、折りたたみ式デバイスで、ロック解除された状態で開いた状態からデバイスを折りたたんだときに外側の画面がどのように動作するかをユーザーが選択できるオプションを設定できます。

この設定は、[設定] > [ディスプレイ] > [折りたたみ時もアプリの使用を継続] にあります。ユーザーには次の 3 つのオプションがあります。

  • 常時: デバイスを折りたたむと、フロント ディスプレイが常にオンになり、ロックが解除されたままになります。
  • 上にスワイプして継続: ユーザーがデバイスを折りたたむと、アプリがウェイクロックを保持している場合を除き、認証を必要とせずにキーガードが表示されます。アプリがウェイクロックを保持している場合は、デバイスはアプリで起動したままになります。これがデフォルトの設定です。
  • 継続しない: デバイスを折りたたむと、デバイスがロックされ、フロント ディスプレイがオフになります。

折りたたみロックの動作設定ページ

図 1. 折りたたみロックの動作設定。

折りたたみロックの動作設定を構成する

設定で折りたたみロックの動作設定を表示するには、デバイスのオーバーレイ config.xml ファイルで config_fold_lock_behavior ブール値を入力します。

  <!-- Whether to show Fold lock behavior setting feature in Settings app -->
  <bool name="config_fold_lock_behavior">true</bool>

実装の詳細

折りたたみロックの動作は、設定と複数のバックエンド クラスによって制御されます。

設定と UI

FOLD_LOCK_BEHAVIOR 設定の値は、文字列として保持されます。これは、[設定] > [ディスプレイ] > [折りたたみ時もアプリの使用を継続] でのユーザーの選択に対応しています。

この設定は display_settings.xml から拡張されます。設定ページの UI は FoldLockBehaviorSettings フラグメントに実装され、設定は FoldLockBehaviorPreferenceController によって管理されます。

バックエンド ロジック

デバイスが折りたたまれている場合、LogicalDisplayMapperPowerManager は次のようにデバイスの動作を制御します。

  1. LogicalDisplayMapper は、FoldSettingProvider を使用して FOLD_LOCK_BEHAVIOR 設定値を読み取ります。
  2. 設定値に基づく:
    • 値が stay_awake_on_fold_key の場合、デバイスはスリープ状態になりません。
    • 値が selective_stay_awake_key または sleep_on_fold_key の場合、LogicalDisplayMapperPowerManager#goToSleep シグナルを送信します。
      • selective_stay_awake_key の場合、#goToSleep シグナルには PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP フラグが含まれます。これにより、認証を必要とせずにキーガードが表示されます。
      • sleep_on_fold_key の場合、このフラグなしで #goToSleep シグナルが送信され、デバイスがロックされます。