Ustawienie działania blokady po złożeniu

Producenci OEM mogą skonfigurować na urządzeniach składanych opcję, która pozwala użytkownikom wybrać, jak ma się zachowywać zewnętrzny ekran po złożeniu urządzenia z odblokowanego i rozłożonego stanu.

To ustawienie znajdziesz w sekcji Ustawienia > Wyświetlacz > Kontynuuj korzystanie z aplikacji po złożeniu. Użytkownik ma do wyboru 3 opcje:

  • Zawsze: gdy użytkownik złoży urządzenie, przedni ekran zawsze się włącza i pozostaje odblokowany.
  • Przesuń w górę, aby kontynuować: gdy użytkownik złoży urządzenie, wyświetli się blokada ekranu bez konieczności uwierzytelniania, chyba że aplikacja utrzymuje blokadę wybudzenia. W takim przypadku urządzenie pozostanie włączone w aplikacji. Jest to ustawienie domyślne.
  • Nigdy:gdy użytkownik złoży urządzenie, zostanie ono zablokowane, a przedni ekran wyłączy się.

Strona ustawień działania blokady po złożeniu

Rysunek 1. Ustawienie zachowania blokady po złożeniu.

Konfigurowanie ustawienia działania blokady po złożeniu

Aby wyświetlić ustawienie zachowania blokady po złożeniu w Ustawieniach, wypełnij wartość logiczną config_fold_lock_behavior w pliku nakładki urządzenia:config.xml

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

Szczegóły implementacji

Działanie blokady po złożeniu jest kontrolowane przez ustawienie i kilka klas backendu.

Ustawienia i interfejs

Wartość ustawienia FOLD_LOCK_BEHAVIOR jest zapisywana jako ciąg znaków, który odpowiada wyborowi użytkownika w sekcji Ustawienia > Wyświetlacz > Nadal używaj aplikacji po złożeniu:

Ustawienie zostało zwiększone z display_settings.xml. Interfejs strony ustawień jest zaimplementowany we fragmencie FoldLockBehaviorSettings, a ustawieniem zarządza FoldLockBehaviorPreferenceController.

Logika systemów wewnętrznych

Gdy urządzenie jest złożone, LogicalDisplayMapperPowerManager sterują jego działaniem w ten sposób:

  1. LogicalDisplayMapper odczytuje wartość ustawienia FOLD_LOCK_BEHAVIOR za pomocą funkcji FoldSettingProvider.
  2. Na podstawie wartości ustawienia:
    • Jeśli wartość to stay_awake_on_fold_key, urządzenie pozostaje aktywne.
    • Jeśli wartość to selective_stay_awake_key lub sleep_on_fold_key, LogicalDisplayMapper wysyła do PowerManager sygnał #goToSleep.
      • W przypadku sygnału selective_stay_awake_key sygnał #goToSleep zawiera flagę PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. Spowoduje to wyświetlenie ekranu blokady bez konieczności uwierzytelniania.
      • W przypadku sleep_on_fold_key sygnał #goToSleep jest wysyłany bez tego flagi, co powoduje zablokowanie urządzenia.