הגדרת הפעולה של נעילת הקיפול

יצרני ציוד מקורי יכולים להגדיר במכשירים מתקפלים אפשרות שמאפשרת למשתמשים לבחור איך המסך החיצוני יתנהג כשהם יקפלו את המכשיר ממצב לא נעול ופתוח.

ההגדרה נמצאת בהגדרות > תצוגה > המשך שימוש באפליקציות כשהמכשיר מקופל. למשתמש יש שלוש אפשרויות:

  • תמיד: כשהמשתמש מקפל את המכשיר, המסך החיצוני תמיד מופעל ונשאר לא נעול.
  • רק אם מחליקים למעלה: כשהמשתמש מקפל את המכשיר, מוצג במכשיר מסך הנעילה בלי שנדרש אימות, אלא אם אפליקציה מחזיקה ב-wakelock, ובמקרה כזה המכשיר נשאר פעיל באפליקציה. זו הגדרת ברירת המחדל.
  • אף פעם: כשהמשתמש מקפל את המכשיר, המכשיר ננעל והמסך החיצוני נכבה.

דף הגדרות של התנהגות הנעילה במצב מקופל

איור 1. הגדרה של התנהגות הנעילה במצב מקופל.

הגדרת אופן הפעולה של נעילת הקיפול

כדי להציג את הגדרת ההתנהגות של הנעילה במצב מקופל בהגדרות, צריך לאכלס את הערך הבוליאני config_fold_lock_behavior בקובץ config.xml של שכבת העל במכשיר:

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

פרטי ההטמעה

ההתנהגות של נעילת הקיפול נשלטת על ידי הגדרה וכמה מחלקות בקצה העורפי.

הגדרה וממשק משתמש

הערך של ההגדרה FOLD_LOCK_BEHAVIOR נשמר כמחרוזת, שמתאימה לבחירה של המשתמש בהגדרות > תצוגה > המשך שימוש באפליקציות כשהמכשיר מקופל:

ההגדרה מוגדלת מ-display_settings.xml. ממשק המשתמש של דף ההגדרות מיושם בקטע FoldLockBehaviorSettings, וההעדפה מנוהלת על ידי FoldLockBehaviorPreferenceController.

לוגיקת קצה

כשהמכשיר מקופל, ההגדרות LogicalDisplayMapper ו-PowerManager שולטות בהתנהגות המכשיר באופן הבא:

  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 נשלח בלי הדגל הזה, ולכן המכשיר ננעל.