Android 7.1.1 پشتیبانی در سطح سیستم را برای حالت نمایشی خردهفروشی معرفی کرد تا مشتریان بتوانند دستگاههای موجود در فروشگاههای خردهفروشی را بررسی کنند. دستگاهها برای نمایش خردهفروشی با استفاده از برنامه مالک دستگاه تنظیم میشوند تا اطمینان حاصل شود که استفاده از دستگاه فقط به برنامههای حالت نمایشی خاص محدود میشود. کاربران نهایی نباید بتوانند یک حساب شخصی در یک دستگاه نمایشی خرده فروشی اضافه کنند. Android 8.1 این پشتیبانی را برای ایجاد کاربران نمایشی از طریق DevicePolicyManager createAndManageUser API اصلاح می کند. این امکان سفارشی سازی OEM بسیار بیشتری را در حالت استاندارد خرده فروشی از نظر مدیریت کاربر و مدیریت خط مشی دستگاه در دستگاه دمو فراهم می کند.
در حالی که APIهای DevicePolicyManager را میتوان در نسخههای قبل از Android 8.1 استفاده کرد، کاربران نوع آزمایشی ( DevicePolicyManager.MAKE_USER_DEMO
) را نمیتوان با CreAndManageUser API در نسخههای 8.0 و پیشتر ایجاد کرد.
پیاده سازی در اندروید 8.1 به بعد
این بخش پیشرفتهای پلتفرم را برجسته میکند و برنامه نمایشی خردهفروشی را در اندروید 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 (AOSP) است. برنامه به دنبال یک ویدیو در یک پارتیشن دستگاه مانند /data/preloads/demo/retail_demo.mp4 میگردد و آن را در یک حلقه پخش میکند. وقتی کاربر صفحه را لمس میکند، راهانداز سفارشی مؤلفه فعالیت آن را غیرفعال میکند که باعث میشود راهانداز پیشفرض سیستم راهاندازی شود.
راهانداز سفارشی باید جزء سفارشیاش را بهطور پیشفرض بهعنوان غیرفعال علامتگذاری کرده باشد تا در سناریوهای غیر نمایشی نشان داده نشود. در سناریوی آزمایشی، سرور سیستم هنگام شروع یک جلسه آزمایشی جدید config_demoModeLauncherComponent
مشخص شده را فعال می کند.
جادوگر راهاندازی همچنین به دنبال ویدیوی ذکر شده قبلی میگردد تا امکان ورود به حالت خردهفروشی را فراهم کند. SUW را می توان تغییر داد تا به دنبال نشانه های خاص OEM باشد مبنی بر اینکه حالت خرده فروشی پشتیبانی می شود اگر ویدیو بخشی از نسخه نمایشی نباشد. اگر پارتیشن های سیستم A/B وجود دارد، پارتیشن سیستم B باید حاوی ویدیوی نمایشی در /preloads/demo باشد. این در اولین راهاندازی به /data/preloads/demo کپی میشود.
برنامه های از پیش بارگذاری شده را برای حالت نمایشی خرده فروشی سفارشی کنید
برنامههای از پیش بارگذاریشده میتوانند با تماس با UserManager.isDemoUser()
API تجربه خود را برای حالت نمایشی خردهفروشی سفارشی کنند تا ببینند آیا برنامه در یک محیط نمایشی راهاندازی شده است یا خیر.
محدودیتهای خاصی در کاربر آزمایشی تنظیم شده است، مشابه سیاستهای دستگاه مدیریتشده یا نمایه که مانع از انجام عملیات خاص برنامهها و کاربران میشود. یکی از این محدودیتها DISALLOW_MODIFY_ACCOUNTS
است. با این محدودیت، AccountManager و تنظیمات اجازه اضافه کردن حسابها را نمیدهند. برخی از برنامههای Google به این محدودیت واکنش نشان میدهند و پیام خطا نشان میدهند، و برخی دیگر برای ایجاد حساب درخواستی نمیکنند (مانند YouTube و Photos). توصیه میکنیم برنامههای OEM نیز بررسی کنند که آیا DISALLOW_MODIFY_ACCOUNTS
تنظیم شده است یا خیر و سناریو را بر اساس آن مدیریت کنند.
به روز رسانی سیستم
بهطور پیشفرض، وقتی حالت خردهفروشی فعال است، خطمشی دستگاه روی بهروزرسانی خودکار (OTA) تنظیم میشود. دستگاههای خردهفروشی بهروزرسانی را دانلود، راهاندازی مجدد و نصب میکنند (با رعایت آستانه باتری) بدون تعامل کاربر.
برنامه نمایشی خرده فروشی
اجرای حالت نمایشی خردهفروشی مبتنی بر مالک دستگاه، نیازمند تنظیم برنامه کنترلکننده سیاست دستگاه بهعنوان مالک دستگاه است. 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ها در کلاس DevicePolicyManager، Device Owner (DO) و Profile Owner (PO) را قادر میسازند تا سیاستهای مختلف دستگاه را اعمال کنند. برخی از عملکردهای DevicePolicyManager قابل اجرا برای حالت نمایشی خرده فروشی به شرح زیر فهرست شده اند.
ایجاد و مدیریت کاربران
دستگاه را راه اندازی مجدد کنید.
بسته های مجاز LockTask را تنظیم کنید.
بسته ها را از طریق PackageInstaller نصب کنید.
بسته ها را از حذف نصب مسدود کنید.
به روز رسانی خودکار سیستم را فعال کنید. دستگاهها بهطور خودکار بهروزرسانیهای OTA را دانلود و اعمال میکنند.
صفحه کلید را غیرفعال کنید.
از تنظیم رمز عبور یا اثر انگشت جلوگیری کنید.
یک مجموعه مجاز از تنظیمات Settings.Global ، Settings.Secure و Settings.System را تنظیم کنید.
خط مشی مجوز را روی
PERMISSION_POLICY_AUTO_GRANT
تنظیم کنید، که به طور خودکار مجوزهای زمان اجرا را اعطا می کند. مجوزها را می توان به صورت محدودتر نیز اعطا کرد: یک مجوز برای یک برنامه واحد. این در مورد مجوزهای app-ops صدق نمی کند، که کاربران همچنان باید بر اساس هر کاربر، برای هر برنامه اعطا کنند.محدودیت های کاربر مربوط به حالت خرده فروشی را همانطور که در 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 این قابلیت را دارد که در صورت وجود اتصال شبکه، ویدیوی آزمایشی را به روز کند. آدرس اینترنتی برای دانلود ویدیو را می توان با نادیده گرفتن مقدار رشته زیر در برنامه RetailDemo پیکربندی کرد.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
اگر نیاز به استفاده از ویدیوهای مختلف در مناطق مختلف باشد، میتوان URLهای دانلود مختلف را با استفاده از منابع رشتهای خاص محلی در 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 در پسزمینه بررسی میکند که آیا URL دانلود ارائه شده است و ویدیو در URL جدیدتر از آنچه در حال پخش است است.
اگر چنین است، برنامه RetailDemo ویدیو را دانلود و شروع به پخش می کند. پس از بارگیری ویدیو، از آن برای پخش در تمام جلسات دمو در آینده استفاده می شود. هیچ یک از بررسی ها تا پس از راه اندازی مجدد بعدی تکرار نمی شود.
دستورالعمل های ویدئوی نمایشی
ویدئوهای نمایشی باید در طرحبندی عمودی یا، اگر تبلت، در جهت طبیعی دستگاه باشند، و میتوانند بیشتر از پنج ثانیه باشند. محتوا نباید باعث سوختگی شود، زیرا در هنگام نمایش به طور مداوم پخش می شود.
برای اطلاعات بیشتر به تعاریف برنامهنویس Android از کاربران، نمایهها و حسابها، مستندات Device Policy Manager API و برنامه Sample Device Owner مراجعه کنید.
اعتبار سنجی
CTS حالت نمایشی خرده فروشی را پوشش نمی دهد زیرا یک ویژگی اختیاری است. آزمایش باید به صورت دستی یا با آزمایش واحد برای برنامه آزمایشی انجام شود.
جلسه نمایشی
راه اندازی جلسه دمو
اگر دستگاههای نمایشی خردهفروشی از کارخانه برای حالت نمایشی پیکربندی شده باشند، ممکن است به حالت نمایشی خردهفروشی راهاندازی شوند. از طرف دیگر، کارمندان خرده فروشی ممکن است حالت خرده فروشی را مستقیماً از جادوگر راه اندازی فعال کنند.
شکل 2. حالت نمایش خرده فروشی
نمایش جلسه دمو
هنگامی که دستگاه وارد حالت خرده فروشی می شود، به یک کاربر آزمایشی جدید سوئیچ می کند و به طور خودکار راه اندازی سفارشی مشخص شده در منبع پوشش را همانطور که در پیاده سازی توضیح داده شده است، راه اندازی می کند. بهطور پیشفرض، این راهانداز سفارشی ویدیوی آزمایشی را به صورت تکراری پخش میکند تا زمانی که کاربر صفحه را لمس کند تا جلسه کاربر آزمایشی شروع شود. در آن زمان لانچر سفارشی لانچر سیستم را راه اندازی می کند و سپس خارج می شود. OEM ها می توانند راه اندازی سفارشی را تغییر دهند تا علاوه بر این، سرویس یا فعالیت دیگری را در هنگام خروج راه اندازی کند.
به منظور حفظ یکپارچگی حالت خردهفروشی، محافظ صفحه کلید غیرفعال است و برخی اقدامات از تنظیمات سریع که میتواند بر حالت خردهفروشی تأثیر منفی بگذارد نیز مجاز نیست، از جمله موارد زیر.
- تغییر حالت هواپیما
- حذف یا تغییر نقاط دسترسی Wi-Fi (تنظیمات).
- تغییر حامل (تنظیمات).
- پیکربندی هات اسپات (تنظیمات).
- تعویض کاربر.
علاوه بر این، دسترسی به برخی از تنظیمات جهانی نیز مسدود شده است که میتوانند با غیرفعال کردن موارد زیر بر حالت خردهفروشی تأثیر بگذارند:
- تنظیمات وای فای
- گزینه های پیکربندی شبکه سلولی، به ویژه نقاط مهم.
- پیکربندی بلوتوث
- پشتیبانگیری و تنظیم مجدد، تاریخ و زمان، و شبکههای تلفن همراه (اصلاً نمایش داده نمیشوند).
اگر کاربر برای مدتی بیکار باشد (به طور پیشفرض 90 ثانیه)، حالت خردهفروشی یک گفتگوی سیستمی را نشان میدهد تا از کاربر بخواهد از جلسه خارج شود یا ادامه دهد. اگر کاربر خروج را انتخاب کند یا به مدت پنج ثانیه پاسخی نداشته باشد، حالت خرده فروشی کاربر آزمایشی فعلی را حذف میکند، به یک کاربر آزمایشی جدید میرود و دوباره ویدیوی اصلی را مرور میکند. اگر صفحه نمایش با استفاده از دکمه پاور خاموش شود، پس از چند ثانیه به طور خودکار روشن می شود.
پس از خروج از یک جلسه نمایشی، دستگاهها خود را بیصدا میکنند و برخی از تنظیمات جهانی از جمله موارد زیر را بازنشانی میکنند:
- روشنایی
- چرخش خودکار
- چراغ قوه
- زبان
- قابلیت دسترسی
از حالت نمایشی خرده فروشی خارج شوید
به منظور خروج از حالت خرده فروشی، کارمندان خرده فروشی باید مطمئن شوند که دستگاه آزمایشی تحت مدیریت دستگاه ثبت نشده است و دستگاه را از بوت لودر بازنشانی کارخانه ای انجام دهند.