יצרני ציוד מקורי יכולים להגדיר במכשירים מתקפלים אפשרות שמאפשרת למשתמשים לבחור איך המסך החיצוני יתנהג כשהם יקפלו את המכשיר ממצב לא נעול ופתוח.
ההגדרה נמצאת בהגדרות > תצוגה > המשך שימוש באפליקציות כשהמכשיר מקופל. למשתמש יש שלוש אפשרויות:
- תמיד: כשהמשתמש מקפל את המכשיר, המסך החיצוני תמיד מופעל ונשאר לא נעול.
- רק אם מחליקים למעלה: כשהמשתמש מקפל את המכשיר, מוצג במכשיר מסך הנעילה בלי שנדרש אימות, אלא אם אפליקציה מחזיקה ב-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 נשמר כמחרוזת,
שמתאימה לבחירה של המשתמש בהגדרות > תצוגה > המשך
שימוש באפליקציות כשהמכשיר מקופל:
- תמיד:
stay_awake_on_fold_key - כדי להמשיך, מחליקים למעלה:
selective_stay_awake_key - אף פעם:
sleep_on_fold_key
ההגדרה מוגדלת מ-display_settings.xml. ממשק המשתמש של דף ההגדרות מיושם בקטע FoldLockBehaviorSettings, וההעדפה מנוהלת על ידי FoldLockBehaviorPreferenceController.
לוגיקת קצה
כשהמכשיר מקופל, ההגדרות LogicalDisplayMapper ו-PowerManager שולטות בהתנהגות המכשיר באופן הבא:
-
LogicalDisplayMapperקורא את ערך ההגדרהFOLD_LOCK_BEHAVIORבאמצעותFoldSettingProvider. - בהתאם לערך ההגדרה:
- אם הערך הוא
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נשלח בלי הדגל הזה, ולכן המכשיר ננעל.
- ב-
- אם הערך הוא