ב-Android 7.1.1 נוספה תמיכה ברמת המערכת למצב הדגמה לקמעונאים, כדי לאפשר ללקוחות לבדוק את המכשירים בפעולה בחנויות קמעונאיות. מכשירים מוגדרים להדגמה לקמעונאים באמצעות אפליקציה של בעלות על המכשיר, כדי להבטיח שהשימוש במכשיר יהיה מוגבל לאפליקציות מסוימות במצב הדגמה בלבד. אסור למשתמשי קצה תהיה אפשרות להוסיף חשבון אישי למכשיר הדגמה (דמו) לקמעונאים. מערכת Android 8.1 משנה את התמיכה הזו כדי ליצור משתמשי הדגמה דרך ה-API של DevicePolicyManager createAndManageUser. כך יצרני ציוד מקורי יכולים להתאים אישית את המצב הרגיל של מכשיר הדגמה לצורכי קמעונאות, במונחים של ניהול משתמשים וניהול מדיניות המכשיר.
אפשר להשתמש בממשקי API של DevicePolicyManager בגרסאות שקודמות ל-Android 8.1, אבל לא ניתן ליצור משתמשי demo-type (DevicePolicyManager.MAKE_USER_DEMO
) באמצעות ה-API createAndManageUser בגרסה 8.0 ובגרסאות קודמות.
הטמעה ב-Android מגרסה 8.1 ואילך
בקטע הזה נדגיש את השיפורים בפלטפורמה ומתאר את אפליקציית ההדגמה לקמעונאים ב-Android 8.1 ואילך.
שינויים בפלטפורמות
הגדרת DEVICE_DEMO_MODE
במכשירים שמטמיעים מצב הדגמה קמעונאי שמבוסס על בעלי המכשיר, צריך להגדיר את הערך של Settings.Global.DEVICE_DEMO_MODE
ל-1 לפני ההקצאה כדי לציין שהמכשיר מוקצה למצב הדגמה קמעונאי.
SystemServer משתמשת בדגל הזה כדי לנהל היבטים של מצב קמעונאי, כמו פרופיל כוח ו-SystemUI.
הפעלת RetailDemoModeService
במכשירים שמטמיעים מצב הדגמה לקמעונאים, האשף להגדרה מגדיר את ההגדרה הגלובלית Global.DEVICE_DEMO_MODE
לערך true
כדי לציין שהמכשיר נכנס למצב קמעונאי. לאחר הצגת ההגדרה הזו, RetailDemoModeService יוצר משתמש להדגמה ועובר אליו כשהמשתמש 0 מופעל, מפעיל את מרכז האפליקציות המותאם אישית שצוין במשאב של שכבת-על ומשבית את SUW. גם System Server וגם SystemUI משתמשים בדגל הזה כדי לנהל היבטים של מצב קמעונאי.
הגדרה של מרכז אפליקציות או נגן וידאו בהתאמה אישית
יצרני מכשירים יכולים לציין מרכז אפליקציות בהתאמה אישית על ידי שינוי של משאב המסגרת config_demoModeLauncherComponent
שצוין בקובץ config.xml באופן הבא.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
אפליקציית DemoPlayer לדגמה לקמעונאים שנמצאת בנתיב /packages/apps/RetailDemo היא מרכז האפליקציות המותאם אישית שמוגדר כברירת מחדל בפרויקט Android Open Source Project (AOSP). האפליקציה מחפשת סרטון במחיצה של המכשיר, למשל /data/preloads/demo/retail_demo.mp4, ומפעילה אותו בלופ. כשהמשתמש נוגע במסך, מרכז האפליקציות המותאם אישית משבית את רכיב הפעילות שלו, וכתוצאה מכך מרכז האפליקציות של ברירת המחדל מופעל.
הרכיב המותאם אישית של מרכז האפליקציות צריך להיות מסומן כברירת מחדל כמושבת, כדי שהוא לא יופיע בתרחישים שאינם דמו. בתרחיש ההדגמה, System Server מפעיל את config_demoModeLauncherComponent
שצוין כשמתחילים סשן הדגמה חדש.
אשף ההגדרה מחפש גם את הסרטון שצוין קודם, כדי שיהיה נוח להיכנס למצב קמעונאות. אפשר לשנות את SUW כך שיחפש סימן אחר ספציפי ליצרן ציוד מקורי שמציין שהמצב לקמעונאים נתמך, אם הסרטון לא נכלל בהדגמה. אם יש מחיצות A/B במערכת, מחיצת המערכת B חייבת להכיל את סרטון ההדגמה בכתובת /preloads/demo. הקובץ הזה מועתק אל /data/preloads/demo בהפעלה הראשונה.
התאמה אישית של אפליקציות שהוגדרו מראש למצב הדגמה לקמעונאים
אפליקציות שהועלו מראש יכולות להתאים אישית את חוויית השימוש שלהן במצב הדגמה לקמעונאים. לשם כך, הן צריכות לקרוא ל-API UserManager.isDemoUser()
כדי לבדוק אם האפליקציה מופעלת בסביבת הדגמה.
הגדרנו הגבלות מסוימות במשתמש הדגמה, בדומה למדיניות של מכשיר מנוהל או של פרופיל שמונעת מאפליקציות וממשתמשים לבצע פעולות מסוימות.
אחת מהמגבלות האלה היא DISALLOW_MODIFY_ACCOUNTS
. בעקבות ההגבלה הזו, לא ניתן להוסיף חשבונות באמצעות AccountManager ו-Settings. אפליקציות מסוימות של Google מגיבות להגבלה הזו ומציגות הודעת שגיאה, ואפליקציות אחרות לא יבקשו חשבון (כמו YouTube ו-Photos). מומלץ לאפליקציות של יצרני ציוד מקורי לבדוק גם אם הערך של DISALLOW_MODIFY_ACCOUNTS
מוגדר ולטפל בתרחיש בהתאם.
עדכוני מערכת
כברירת מחדל, כשמצב קמעונאי מופעל, מדיניות המכשיר מוגדרת לעדכון אלחוטי (OTA) באופן אוטומטי. מכשירים קמעונאיים יורידו, יפעילו מחדש ויתקינו את העדכון (בהתאם לערכי הסף של הסוללה) ללא אינטראקציה של המשתמשים.
אפליקציית הדגמה לקמעונאים
כדי להטמיע מצב הדגמה לקמעונאות שמבוסס על הבעלים של המכשיר, צריך להגדיר את האפליקציה Device Policy Controller כבעלים של המכשיר. ב-AOSP יש הטמעה של אפליקציית RetailDemo לדוגמה, ב-/packages/apps/RetailDemo.
לאפליקציות של בעלי המכשיר לא נדרשות הרשאות מורחבות או התקנה מראש בתמונת המערכת, ואפשר להוריד אותן במהלך ההגדרה או תהליך ההקצאה. הן מיושמות בדרך כלל כמו אפליקציות רגילות, עם ההבדלים הבאים:
כל האפליקציות של בעלי המכשיר חייבות להרחיב את הרכיב DeviceAdminReceiver, שמשמש כאסימון ההרשאה לכל ממשקי ה-API של DevicePolicyManager. הרכיב צריך להחזיק את ההרשאה
android.permission.BIND_DEVICE_ADMIN
, לכלול את המדיניות המיוחדת המבוקשת כמטא-נתונים ולסנן את האובייקטיםandroid.app.action.PROFILE_PROVISIONING_COMPLETE
ו-android.app.action.DEVICE_ADMIN_ENABLED
.הדגל DevicePolicyManager#make_USER_DEMO, שמוגדר ליצירת משתמשים מיוחדים מסוג הדגמה, הוא API מוסתר. הערך של הדגל הזה הוא הקבוע 0x4.
צריך להקצות בעלות על המכשיר רק דרך בעל התפקיד 'ניהול מכשירים' או דרך האפליקציה ManagedProvisioning.
ממשקי ה-API ב-class DevicePolicyManager מאפשרים לבעלי המכשיר (DO) ולבעלי הפרופיל (PO) לאכוף כללי מדיניות שונים במכשיר. בהמשך מפורטות חלק מהפונקציות של DevicePolicyManager שרלוונטיות למצב הדגמה לקמעונאים.
יצירה וניהול של משתמשים.
מפעילים מחדש את המכשיר.
מגדירים את החבילות המותרות של LockTask.
התקנת חבילות דרך PackageInstaller.
חסימת האפשרות להסיר חבילות.
מפעילים עדכוני מערכת אוטומטיים. המכשירים יורידו עדכונים דרך OTA ויתקינו אותם באופן אוטומטי.
משביתים את מסך הנעילה.
מניעת הגדרת סיסמאות או טביעות אצבע.
מגדירים רשימת היתרים של הגדרות Settings.Global, Settings.Secure ו-Settings.System.
מגדירים את מדיניות ההרשאות ל-
PERMISSION_POLICY_AUTO_GRANT
, שמעניקה באופן אוטומטי את כל ההרשאות בסביבת זמן הריצה. אפשר גם להעניק את ההרשאות באופן צר יותר: הרשאה אחת לאפליקציה אחת, אבל לא חלה על הרשאות לתפעול אפליקציות, שהמשתמשים עדיין צריכים להעניק לכל משתמש בנפרד.מגדירים את הגבלות המשתמשים שרלוונטיות למצב הקמעונאי כפי שמוגדר ב-UserManager באופן הבא.
DISALLOW_MODIFY_ACCOUNTS
DISALLOW_USB_FILE_TRANSFER
DISALLOW_DEBUGGING_FEATURES
DISALLOW_CONFIG_WIFI
DISALLOW_CONFIG_BLUETOOTH
DISALLOW_INSTALL_UNKNOWN_SOURCES
DISALLOW_CONFIG_MOBILE_NETWORKS
עדכון סרטון ההדגמה באינטרנט
לאפליקציית RetailDemo ב-/packages/apps/RetailDemo יש אפשרות לעדכן את סרטון ההדגמה אם יש חיבור לרשת. כדי להגדיר את כתובת ה-URL שממנה רוצים להוריד את הסרטון, צריך לשנות את ערך המחרוזת הבא באפליקציה RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
אם צריך להשתמש בסרטונים שונים באזורים שונים, אפשר להגדיר כתובות URL שונות להורדה באמצעות משאבי מחרוזות ספציפיים לאזור גיאוגרפי ב-res/values-*/strings.xml. לדוגמה, אם צריך להשתמש בסרטונים שונים בארצות הברית ובבריטניה, אפשר להציב את כתובות ה-URL המתאימות להורדה בקובצי res/values-en-rUS/strings.xml ו-res/values-en-rGB/strings.xml, בהתאמה, כפי שמתואר בהמשך.
בקובץ res/values-en-rUS/strings.xml:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
בקובץ res/values-en-rGB/strings.xml:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
הסרטון הזה יורד לכל היותר פעם אחת בכל הפעלה מחדש של המכשיר. כשהסרטון במכשיר מופעל, אפליקציית RetailDemo בודקת ברקע אם צוינה כתובת ה-URL להורדה והסרטון בכתובת ה-URL עדכני יותר מהסרטון שמופעל.
אם כן, אפליקציית RetailDemo מורידה את הסרטון ומתחילה להפעיל אותו. אחרי שמורידים את הסרטון, הוא ישמש להפעלה בכל סשנים של הדגמה ואילך. הבדיקות לא יתבצעו שוב עד להפעלה מחדש הבאה.
הנחיות לגבי סרטוני הדגמה
סרטוני ההדגמה חייבים להיות בפורמט לאורך, או אם מדובר בטאבלט, בכיוון הטבעי של המכשיר. אורך הסרטון יכול להיות כלשהו, כל עוד הוא ארוך מ-5 שניות. אסור שהתוכן יגרום לצריבה, כי הוא יופעל כל הזמן כשהוא מוצג.
מידע נוסף זמין בהגדרות למפתחי Android של משתמשים, פרופילים וחשבונות, במסמכי התיעוד של Device Policy Manager API ובאפליקציה לדוגמה של בעלי המכשיר.
אימות
CTS לא כולל את מצב ההדגמה לקמעונאים כי הוא תכונה אופציונלית. צריך לבצע בדיקה ידנית או בדיקות יחידה לאפליקציית הדגמה.
סשן הדגמה
הגדרת סשן הדגמה
מכשירי הדגמה לקמעונאים יכולים לעבור למצב הדגמה לקמעונאים, אם הם הוגדרו למצב הדגמה מהיצרן. לחלופין, עובדים בחנות הפיזית יכולים להפעיל את מצב הקמעונאות ישירות מאשף ההגדרה.
איור 2. מצב הדגמה לקמעונאים
הצגת סשן הדגמה
כשהמכשיר עובר למצב קמעונאי, הוא עובר למשתמש הדגמה חדש ומפעיל באופן אוטומטי את מרכז האפליקציות המותאם אישית שצוין במשאב שכבת-העל, כפי שמתואר בקטע הטמעה. כברירת מחדל, מרכז האפליקציות המותאם אישית הזה מפעיל את סרטון ההדגמה שוב ושוב עד שהמשתמש נוגע במסך כדי להתחיל סשן הדגמה של משתמש. בשלב הזה, מרכז האפליקציות המותאם אישית מפעיל את מרכז האפליקציות של המערכת ואז יוצא. יצרני ציוד מקורי יכולים לשנות את מרכז האפליקציות בהתאמה אישית כדי להפעיל שירות או פעילות נוספים ביציאה.
כדי לשמור על תקינות מצב הקמעונאי, מסך הנעילה מושבת, וגם פעולות מסוימות בהגדרות המהירות שעלולות להשפיע לרעה על מצב הקמעונאי אסורות, כולל הפעולות הבאות.
- המתג של מצב הטיסה.
- הסרה או שינוי של נקודות גישה ל-Wi-Fi (הגדרות).
- שינוי ספק (הגדרות).
- הגדרת נקודה לשיתוף אינטרנט (הגדרות).
- החלפת משתמשים.
בנוסף, הגישה חסומה גם לחלק מההגדרות הגלובליות שיכולות להשפיע על מצב הקמעונאי, על ידי השבתת האפשרויות הבאות:
- הגדרות Wi-Fi.
- אפשרויות תצורה של רשתות סלולריות, במיוחד נקודות לשיתוף אינטרנט (Hotspot).
- הגדרת Bluetooth.
- גיבוי ואיפוס, תאריך ושעה ורשתות סלולריות (הן לא מופיעות בכלל).
אם המשתמש לא פעיל למשך פרק זמן מסוים (ברירת המחדל של 90 שניות), במצב הקמעונאי מוצגת תיבת דו-שיח של המערכת שבה תתבקשו לצאת מהסשן או להמשיך. אם המשתמש בוחר לצאת או אם לא הייתה תגובה במשך חמש שניות, מצב הקמעונאי מסיר את משתמש ההדגמה הנוכחי, עובר למשתמש ההדגמה החדש ועובר שוב על הסרטון המקורי. אם המסך נכבה באמצעות לחצן ההפעלה, הוא נדלק מחדש באופן אוטומטי אחרי כמה שניות.
אחרי שיוצאים מסשן ההדגמה, המכשירים משתיקים את עצמם ומאפסים חלק מההגדרות הגלובליות, כולל ההגדרות הבאות:
- בהירות
- סיבוב אוטומטי
- פנס
- Language
- נגישות
יציאה ממצב ההדגמה לקמעונאים
כדי לצאת ממצב קמעונאי, עובדי הקמעונאי צריכים לוודא שמכשיר ההדגמה לא רשום בתוכנית ניהול המכשירים, ולאפס את המכשיר להגדרות המקוריות דרך תוכנת האתחול.