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

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