Android 7.1.1 پشتیبانی سطح سیستم را برای حالت نسخه نمایشی خردهفروشان معرفی کرد تا مشتریان بتوانند دستگاهها را در فروشگاههای خردهفروشی درحال کار بررسی کنند. دستگاهها برای نمایش نمونه در خردهفروشی بااستفاده از برنامه مالک دستگاه راهاندازی میشوند تا اطمینان حاصل شود که استفاده از دستگاه فقط به برنامههای خاص حالت نمایشی محدود میشود. کاربران نهایی نباید بتوانند حساب شخصی به دستگاه نمونه برای خردهفروشان اضافه کنند. Android 8.1 این پشتیبانی را برای ایجاد کاربران نمایشی ازطریق میانای برنامهسازی کاربردی createAndManageUser در DevicePolicyManager اصلاح میکند. این کار امکان سفارشیسازی بسیار بیشتری را برای سازندگان تجهیزات اصلی در حالت خردهفروشی استاندارد در زمینه مدیریت کاربر و مدیریت خطمشی دستگاه در دستگاه نمایشی فراهم میکند.
اگرچه میتوان از میاناهای برنامهسازی کاربردی DevicePolicyManager
در نسخههای قبلاز Android 8.1 استفاده کرد،
نمیتوان کاربران نوع نمایشی (DevicePolicyManager.MAKE_USER_DEMO) را
با میانای برنامهسازی کاربردی createAndManageUser
در نسخههای ۸.۰ و قدیمیتر ایجاد کرد.
پیادهسازی در Android 8.1 و نسخههای جدیدتر
این بخش بهبودهای پلاتفرم را برجسته میکند و برنامه نسخه نمایشی فروشگاه در Android 8.1 و نسخههای جدیدتر را شرح میدهد.
تغییرات پلاتفرم
تنظیم DEVICE_DEMO_MODE
دستگاههایی که حالت نمایشگر فروشگاهی مبتنی بر مالک دستگاه را پیادهسازی میکنند باید
Settings.Global.DEVICE_DEMO_MODE را قبلاز آمادهسازی روی ۱ تنظیم کنند تا نشان دهند که دستگاه برای حالت نمایشگر فروشگاهی آمادهسازی میشود.
SystemServer
از این پرچم برای مدیریت جنبههای حالت خردهفروشی، مانند نمایه مصرف برق و
SystemUI استفاده میکند.
فعال کردن RetailDemoModeService
در دستگاههایی که حالت نمایشی خردهفروشی را پیادهسازی میکنند، دستیار راهاندازی تنظیم جهانی
Global.DEVICE_DEMO_MODE را روی true تنظیم میکند تا نشان دهد دستگاه وارد حالت خردهفروشی شده است. با دیدن این تنظیم، RetailDemoModeService یک کاربر نمایشی ایجاد میکند و وقتی کاربر ۰ شروع میشود، به آن جابهجا میشود، راهانداز سفارشی مشخصشده در منبع همپوشانی را فعال میکند، و SUW را غیرفعال میکند. سیستم
«کارساز» و «میانای سیستم» نیز از این پرچم برای مدیریت جنبههای حالت فروشگاهی استفاده میکنند.
تنظیم راهانداز سفارشی یا پخشکننده ویدیو
تولیدکنندگان دستگاه میتوانند با ملغی کردن منبع چارچوب 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» (AOSP) است. این برنامه در پارتیشن دستگاه بهدنبال ویدیویی مانند /data/preloads/demo/retail_demo.mp4 میگردد و آن را بهصورت حلقهای پخش میکند. وقتی کاربر صفحهنمایش را لمس میکند، راهانداز سفارشی جزء فعالیتش را غیرفعال میکند که باعث میشود راهانداز سیستم پیشفرض راهاندازی شود.
راهانداز سفارشی باید مؤلفه سفارشی خود را بهطور پیشفرض بهعنوان غیرفعال علامتگذاری کند
تا در سناریوهای غیرنمایشی نشان داده نشود. در سناریو نمایشی، «سیستم
کارساز» config_demoModeLauncherComponent مشخصشده را هنگام شروع
جلسه نمایشی جدید فعال میکند.
دستیار راهاندازی همچنین بهدنبال ویدیو ذکرشده در بالا میگردد تا امکان ورود به حالت خردهفروشی را فراهم کند. اگر ویدیو بخشی از نسخه نمایشی نباشد، میتوان SUW را تغییر داد تا بهدنبال نشانههای خاص سازنده اصلی تجهیزات (OEM) بگردد که نشان دهد حالت خردهفروشی پشتیبانی میشود. اگر پارتیشنهای A/B سیستم وجود داشته باشد، پارتیشن B سیستم باید حاوی ویدیو نمایشی در /preloads/demo باشد. این در اولین راهاندازی در /data/preloads/demo کپی میشود.
سفارشیسازی کردن برنامههای ازپیش بارگذاریشده برای حالت نمونه برای خردهفروشان
برنامههای ازپیش بارگذاریشده میتوانند تجربه خود را برای حالت نمایشی خردهفروشان با فراخوانی
میانای برنامهسازی کاربردی UserManager.isDemoUser()
سفارشیسازی کنند تا ببینند برنامه در محیط نمایشی راهاندازی شده است یا نه.
محدودیتهای خاصی در کاربر نمایشی تنظیم شده است، مشابه خطمشیهای دستگاه یا نمایه مدیریتشده که مانع از انجام عملیات خاص توسط برنامهها و کاربران میشود.
یکی از این محدودیتها DISALLOW_MODIFY_ACCOUNTS است. با این محدودیت، AccountManager
و تنظیمات
اجازه افزودن حساب را نمیدهند. برخیاز برنامههای Google به این محدودیت واکنش نشان میدهند
و پیام خطا نشان میدهند، و برخی دیگر برای حساب درخواست نمیکنند (مانند
YouTube و Photos). توصیه میکنیم برنامههای OEM نیز بررسی کنند که آیا
DISALLOW_MODIFY_ACCOUNTS تنظیم شده است یا نه و سناریو را براساس آن مدیریت کنند.
بهروزرسانیهای سیستم
بهطور پیشفرض، وقتی حالت خردهفروشی فعال باشد، خطمشی دستگاه روی بهروزرسانی خودکار ازطریق هوا (OTA) تنظیم میشود. دستگاههای خردهفروشی بدون تعامل کاربر، بهروزرسانی را بارگیری، بازراهاندازی، و نصب میکنند (آستانههای باتری را رعایت میکنند).
برنامه نمونه برای خردهفروشان
اجرای حالت نمایش فروشگاهی مبتنی بر مالک دستگاه نیازمند کنترلکننده خطمشی دستگاه برنامهای است که بهعنوان مالک دستگاه تنظیم شود. AOSP حاوی پیادهسازی برنامه مرجع RetailDemo در /packages/apps/RetailDemo است.
برنامههای مالک دستگاه به امتیازهای عالی یا پیشنصب در تصویر سیستم نیاز ندارند و میتوانند درطول فرایند راهاندازی یا تدارک بارگیری شوند. این برنامهها بیشتر شبیه برنامههای سنتی پیادهسازی میشوند، با تفاوتهای زیر:
همه برنامههای مالک دستگاه باید DeviceAdminReceiver جزء را گسترش دهند که بهعنوان کد مجوز برای همه DevicePolicyManager میاناهای برنامهسازی کاربردی عمل میکند. این عنصر باید
android.permission.BIND_DEVICE_ADMINاجازه را داشته باشد، خطمشیهای ویژه درخواستی را بهعنوان فراداده اضافه کند، و هدفهایandroid.app.action.PROFILE_PROVISIONING_COMPLETEوandroid.app.action.DEVICE_ADMIN_ENABLEDرا فیلتر کند.پرچم DevicePolicyManager#MAKE_USER_DEMO که برای ایجاد کاربران ویژه نوع نمایشی تنظیم شده است، یک میانای برنامهسازی کاربردی پنهان است. این پرچم مقدار ثابت 0x4 را دارد.
مالکیت دستگاه باید فقط ازطریق دارنده نقش مدیریت دستگاه یا برنامه ManagedProvisioning واگذار شود.
میاناهای برنامهسازی کاربردی در کلاس DevicePolicyManager به «مالک دستگاه» (DO) و «مالک نمایه» (PO) امکان میدهند خطمشیهای مختلف دستگاه را اجرا کنند. برخیاز عملکردهای DevicePolicyManager که برای حالت نمایش خردهفروشی قابلاجرا است در زیر فهرست شده است.
کاربران را ایجاد و مدیریت کنید.
دستگاه را بازراهاندازی کنید.
بستههای مجاز برای «تنظیم وظیفه قفل» را تنظیم کنید.
بستهها را ازطریق PackageInstaller نصب کنید.
جلوگیری از حذف نصب بستهها.
بهروزرسانیهای خودکار سیستم را فعال کنید. دستگاهها بهروزرسانیهای OTA را بهطور خودکار بارگیری و اعمال میکنند.
«محافظ صفحهکلید» را غیرفعال کنید.
از تنظیم گذرواژه یا اثر انگشت جلوگیری میکند.
مجموعه تنظیمات مجاز Settings.Global، Settings.Secure، و Settings.System را تنظیم کنید.
خطمشی اجازه را روی
PERMISSION_POLICY_AUTO_GRANTتنظیم کنید، که بهطور خودکار همه اجازههای زمان اجرا را اعطا میکند. اجازهها همچنین میتوانند بهصورت محدودتر اعطا شوند: یک اجازه به یک برنامه. این مورد برای اجازههای ops برنامه اعمال نمیشود، که کاربران همچنان باید آنها را براساس هر کاربر و هر برنامه اعطا کنند.محدودیتهای کاربر مربوط به حالت خردهفروشی را مطابق با تعریف UserManager بهصورت زیر تنظیم کنید.
DISALLOW_MODIFY_ACCOUNTSDISALLOW_USB_FILE_TRANSFERDISALLOW_DEBUGGING_FEATURESDISALLOW_CONFIG_WIFIDISALLOW_CONFIG_BLUETOOTHDISALLOW_INSTALL_UNKNOWN_SOURCESDISALLOW_CONFIG_MOBILE_NETWORKS
بهروزرسانی ویدیو نمایشی بااستفاده از وب
برنامه RetailDemo در /packages/apps/RetailDemo درصورت وجود اتصال شبکه، قابلیت بهروزرسانی ویدیو نمایشی را دارد. نشانی وب برای بارگیری ویدیو را میتوان با ملغی کردن مقدار رشته زیر در برنامه RetailDemo پیکربندی کرد.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
اگر ویدیوهای مختلفی باید در مناطق مختلف استفاده شوند، نشانیهای وب بارگیری مختلفی را میتوان بااستفاده از منابع رشتهای مختص زبان محلی در res/values-*/strings.xml پیکربندی کرد. برای مثال، اگر ویدیوهای مختلفی باید در ایالات متحده و بریتانیا استفاده شود، نشانیهای وب بارگیری مربوطه را میتوان بهترتیب در 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 در پسزمینه بررسی میکند که آیا نشانی وب بارگیری ارائه شده است و آیا ویدیو در نشانی وب جدیدتر از ویدیویی است که درحال پخش است.
اگر اینطور باشد، برنامه RetailDemo ویدیو را بارگیری میکند و پخش آن را شروع میکند. پساز بارگیری ویدیو، از آن برای پخش در همه جلسههای نمایشی آینده استفاده میشود. هیچکدام از بررسیها تا بعداز بازراهاندازی بعدی دوباره انجام نمیشود.
رهنمودهای ویدیو نسخه نمایشی
ویدیوهای نمایشی باید در چیدمان عمودی یا، درصورت استفاده از رایانه لوحی، در جهت طبیعی دستگاه باشند و میتوانند هر طولی بیشتر از پنج ثانیه داشته باشند. محتوا نباید باعث ایجاد تصویر سایه شود، زیرا وقتی نمایش داده میشود بهطور مداوم پخش خواهد شد.
برای اطلاعات بیشتر، تعاریف توسعهدهنده Android از کاربران، نمایهها، و حسابها، سند Device Policy Manager API و برنامه نمونه مالک دستگاه را ببینید.
اعتبارسنجی
CTS حالت نمایشی خردهفروشی را پوشش نمیدهد زیرا این ویژگی اختیاری است. آزمایش باید بهصورت دستی یا با آزمونهای واحد برای برنامه نمایشی انجام شود.
جلسه نمایشی
راهاندازی جلسه نمایشی
اگر دستگاههای نمونه برای خردهفروشان از کارخانه برای حالت نمایشی پیکربندی شده باشند، ممکن است در حالت نمونه برای خردهفروشان راهاندازی شوند. یا اینکه کارمندان خردهفروشی میتوانند حالت خردهفروشی را مستقیماً از دستیار راهاندازی فعال کنند.

شکل ۲. حالت نمایش خردهفروش
نمایش جلسه نمایشی
وقتی دستگاه وارد حالت خردهفروشی میشود، به کاربر نمایشی جدیدی تغییر میکند و راهانداز سفارشی مشخصشده در منبع همپوشانی را بهطور خودکار شروع میکند همانطور که در پیادهسازی شرح داده شده است. بهطور پیشفرض، این راهانداز سفارشی ویدیو نمایشی را تکرار میکند تا زمانی که کاربر صفحهنمایش را لمس کند و جلسه کاربر نمایشی شروع شود. در آن زمان، راهانداز سفارشی راهانداز سیستم را شروع میکند و سپس خارج میشود. تولیدکنندگان تجهیزات اصلی میتوانند راهانداز سفارشی را تغییر دهند تا علاوهبر آن، سرویس یا فعالیت دیگری را هنگام خروج راهاندازی کنند.
برای حفظ یکپارچگی حالت خردهفروشی، محافظ کلید غیرفعال است و برخیاز کنشهای «تنظیمات فوری» که میتوانند تأثیر منفی بر حالت خردهفروشی داشته باشند نیز مجاز نیستند، ازجمله موارد زیر.
- کلید روشن/خاموش حالت هواپیما.
- برداشتن یا اصلاح نقاط دسترسی Wi-Fi (تنظیمات).
- درحال تغییر شرکت مخابراتی (تنظیمات).
- درحال پیکربندی نقطه اتصال (تنظیمات).
- درحال عوض کردن کاربر.
علاوهبراین، دسترسی به برخیاز تنظیمات جهانی که میتوانند بر حالت فروشگاهی تأثیر بگذارند نیز با غیرفعال کردن موارد زیر مسدود میشود:
- تنظیمات Wi-Fi.
- گزینههای پیکربندی شبکه تلفن همراه، بهویژه نقاط اتصال.
- پیکربندی بلوتوث.
- «پشتیبانگیری و بازنشانی»، «تاریخ و زمان»، و «شبکههای تلفن همراه» (اصلاً نمایش داده نمیشوند).
اگر کاربر برای مدتی (پیشفرض ۹۰ ثانیه) غیرفعال باشد، حالت فروشگاهی کادر گفتگوی سیستمی را نشان میدهد تا از کاربر بخواهد از جلسه خارج شود یا ادامه دهد. اگر کاربر تصمیم به خروج بگیرد یا اگر بهمدت پنج ثانیه پاسخی دریافت نشود، حالت نمایشگاهی کاربر نمایشی فعلی را حذف میکند، به کاربر نمایشی جدیدی میرود، و ویدیو اصلی را دوباره بهصورت حلقهای پخش میکند. اگر صفحهنمایش بااستفاده از دکمه روشن/خاموش خاموش شود، پساز چند ثانیه بهطور خودکار روشن میشود.
پساز خروج از جلسه نمایشی، دستگاهها خودشان را بیصدا میکنند و برخیاز تنظیمات سراسری را بازنشانی میکنند، ازجمله موارد زیر:
- روشنایی
- چرخش خودکار
- چراغقوه
- زبان
- دسترسپذیری
خروج از حالت نمونه برای خردهفروشان
برای خروج از حالت خردهفروشی، کارمندان خردهفروشی باید مطمئن شوند که دستگاه نمایشی تحت مدیریت دستگاه ثبت نشده باشد و دستگاه را از بارکننده بازنشانی کارخانهای کنند.