Android 7.1.1 में, रीटेल डेमो मोड के लिए सिस्टम-लेवल पर सहायता उपलब्ध कराई गई है. इससे खरीदार, खुदरा दुकानों पर डिवाइसों को इस्तेमाल करके देख सकते हैं. डिवाइसों को रीटेल डेमो के लिए सेट अप किया जाता है. इसके लिए, डिवाइस के मालिक का ऐप्लिकेशन इस्तेमाल किया जाता है, ताकि यह पक्का किया जा सके कि डिवाइस का इस्तेमाल सिर्फ़ डेमो मोड वाले कुछ ऐप्लिकेशन तक सीमित है. खुदरा स्टोर में डेमो के लिए रखे गए डिवाइस पर, असली उपयोगकर्ताओं को निजी खाता जोड़ने की अनुमति नहीं होनी चाहिए. Android 8.1 में, इस सुविधा को बेहतर बनाया गया है. अब DevicePolicyManager createAndManageUser API के ज़रिए, डेमो उपयोगकर्ता बनाए जा सकते हैं. इससे ओईएम को, स्टैंडर्ड रीटेल मोड को ज़्यादा बेहतर तरीके से पसंद के मुताबिक बनाने की सुविधा मिलती है. ऐसा डेमो डिवाइस पर उपयोगकर्ता को मैनेज करने और डिवाइस की नीति को मैनेज करने के मामले में होता है.
DevicePolicyManager एपीआई का इस्तेमाल, Android 8.1 से पहले के वर्शन पर किया जा सकता है. हालांकि, 8.0 और इससे पहले के वर्शन में, createAndManageUser एपीआई की मदद से demo-type उपयोगकर्ता (DevicePolicyManager.MAKE_USER_DEMO
) नहीं बनाए जा सकते.
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 को बंद करता है. सिस्टम
सर्वर और 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>
Android ओपन सोर्स प्रोजेक्ट (AOSP) में, रीटेल डेमो DemoPlayer ऐप्लिकेशन डिफ़ॉल्ट कस्टम लॉन्चर होता है. यह /packages/apps/RetailDemo पर मौजूद होता है. यह ऐप्लिकेशन, डिवाइस के किसी पार्टीशन में वीडियो ढूंढता है. जैसे, /data/preloads/demo/retail_demo.mp4. इसके बाद, यह वीडियो को लूप में चलाता है. जब उपयोगकर्ता स्क्रीन को टच करता है, तो कस्टम लॉन्चर अपने ऐक्टिविटी कॉम्पोनेंट को बंद कर देता है. इससे सिस्टम का डिफ़ॉल्ट लॉन्चर शुरू हो जाता है.
कस्टम लॉन्चर में, कस्टम कॉम्पोनेंट को डिफ़ॉल्ट रूप से 'बंद है' के तौर पर मार्क किया जाना चाहिए, ताकि यह डेमो के अलावा अन्य स्थितियों में न दिखे. डेमो के उदाहरण में, सिस्टम सर्वर, नया डेमो सेशन शुरू करते समय, तय किए गए config_demoModeLauncherComponent
को चालू करता है.
सेटअप विज़र्ड, खुदरा मोड में जाने का विकल्प देने के लिए, ऊपर बताए गए वीडियो को भी ढूंढता है. अगर वीडियो डेमो का हिस्सा नहीं है, तो SUW में बदलाव करके, यह पता लगाया जा सकता है कि रीटेल मोड काम करता है या नहीं. इसके लिए, OEM के हिसाब से कोई अन्य साइन देखा जा सकता है. अगर सिस्टम में A/B पार्टीशन हैं, तो सिस्टम B पार्टीशन में /preloads/demo पर डेमो वीडियो होना चाहिए. यह पहली बार बूट करने पर, /data/preloads/demo पर कॉपी हो जाता है.
रीटेल डेमो मोड के लिए, पहले से लोड किए गए ऐप्लिकेशन को पसंद के मुताबिक बनाना
पहले से लोड किए गए ऐप्लिकेशन, रीटेल डेमो मोड के लिए अपने अनुभव को पसंद के मुताबिक बना सकते हैं. इसके लिए, उन्हें UserManager.isDemoUser()
एपीआई को कॉल करना होगा. इससे यह पता चलेगा कि ऐप्लिकेशन को डेमो एनवायरमेंट में लॉन्च किया गया है या नहीं.
डेमो उपयोगकर्ता के लिए कुछ पाबंदियां सेट की जाती हैं. ये पाबंदियां, मैनेज किए जा रहे डिवाइस या प्रोफ़ाइल की उन नीतियों की तरह होती हैं जो ऐप्लिकेशन और उपयोगकर्ताओं को कुछ कार्रवाइयां करने से रोकती हैं.
इनमें से एक पाबंदी DISALLOW_MODIFY_ACCOUNTS
है. इस पाबंदी की वजह से, AccountManager और Settings में खाते नहीं जोड़े जा सकते. Google के कुछ ऐप्लिकेशन इस पाबंदी पर प्रतिक्रिया देते हैं और गड़बड़ी का मैसेज दिखाते हैं. वहीं, कुछ ऐप्लिकेशन खाते के लिए प्रॉम्प्ट नहीं करते. जैसे, YouTube और Photos. हमारा सुझाव है कि ओईएम ऐप्लिकेशन भी यह देखें कि DISALLOW_MODIFY_ACCOUNTS
सेट है या नहीं. साथ ही, इसके हिसाब से कार्रवाई करें.
सिस्टम अपडेट
डिफ़ॉल्ट रूप से, रीटेल मोड चालू होने पर डिवाइस की नीति, अपने-आप अपडेट होने की सुविधा पर सेट होती है. खुदरा स्टोर में मौजूद डिवाइस, उपयोगकर्ता की अनुमति के बिना अपडेट डाउनलोड, रीबूट, और इंस्टॉल करेंगे. हालांकि, ऐसा बैटरी के थ्रेशोल्ड के हिसाब से किया जाएगा.
रीटेल डेमो ऐप्लिकेशन
डिवाइस के मालिक के आधार पर खुदरा डेमो मोड लागू करने के लिए, डिवाइस नीति कंट्रोलर ऐप्लिकेशन को डिवाइस के मालिक के तौर पर सेट करना ज़रूरी है. AOSP में, /packages/apps/RetailDemo में 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 क्लास में मौजूद एपीआई की मदद से, डिवाइस के मालिक (डीओ) और प्रोफ़ाइल के मालिक (पीओ) को डिवाइस से जुड़ी अलग-अलग नीतियां लागू करने की सुविधा मिलती है. रीटेल डेमो मोड के लिए लागू होने वाले DevicePolicyManager के कुछ फ़ंक्शन यहां दिए गए हैं.
उपयोगकर्ताओं को बनाया और मैनेज किया जा सकता है.
डिवाइस को रीबूट करें.
LockTask के लिए अनुमति वाले पैकेज सेट करता है.
PackageInstaller की मदद से पैकेज इंस्टॉल करें.
पैकेज को अनइंस्टॉल होने से रोकें.
सिस्टम अपने-आप अपडेट होने की सुविधा चालू करें. डिवाइस, ओटीए अपडेट को अपने-आप डाउनलोड और लागू करेंगे.
कीगार्ड की सुविधा बंद करें.
पासवर्ड या फ़िंगरप्रिंट सेट करने से रोकता है.
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
वेब का इस्तेमाल करके डेमो वीडियो अपडेट करना
/packages/apps/RetailDemo में मौजूद 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 का दस्तावेज़, और डिवाइस के मालिक के ऐप्लिकेशन का सैंपल देखें.
Validation
CTS, रीटेल डेमो मोड को कवर नहीं करता, क्योंकि यह एक वैकल्पिक सुविधा है. डेमो ऐप्लिकेशन के लिए, टेस्टिंग को मैन्युअल तरीके से या यूनिट टेस्ट के साथ किया जाना चाहिए.
डेमो सेशन
डेमो सेशन का सेटअप
अगर रीटेल डेमो डिवाइस को फ़ैक्ट्री से डेमो मोड के लिए कॉन्फ़िगर किया गया है, तो हो सकता है कि वे रीटेल डेमो मोड में बूट हों. इसके अलावा, खुदरा स्टोर के कर्मचारी सीधे सेटअप विज़र्ड से खुदरा मोड चालू कर सकते हैं.
दूसरी इमेज. रीटेल डेमो मोड
डेमो सेशन दिखाना है
डिवाइस के रीटेल मोड में आने पर, यह डेमो के लिए इस्तेमाल होने वाले नए उपयोगकर्ता पर स्विच हो जाता है. साथ ही, ओवरले रिसॉर्स में बताए गए कस्टम लॉन्चर को अपने-आप शुरू कर देता है. इसके बारे में लागू करना सेक्शन में बताया गया है. डिफ़ॉल्ट रूप से, यह कस्टम लॉन्चर डेमो वीडियो को तब तक बार-बार चलाता है, जब तक उपयोगकर्ता डेमो सेशन शुरू करने के लिए स्क्रीन को टच नहीं करता. इस दौरान, कस्टम लॉन्चर, सिस्टम लॉन्चर को शुरू करता है और फिर बंद हो जाता है. OEM, कस्टम लॉन्चर में बदलाव कर सकते हैं, ताकि बाहर निकलने पर कोई दूसरी सेवा या गतिविधि भी लॉन्च की जा सके.
रीटेल मोड को सही तरीके से काम करने के लिए, कीगार्ड की सुविधा बंद कर दी जाती है. साथ ही, क्विक सेटिंग में मौजूद कुछ ऐसी कार्रवाइयों को भी अनुमति नहीं दी जाती है जिनसे रीटेल मोड पर बुरा असर पड़ सकता है. इनमें ये कार्रवाइयां शामिल हैं.
- हवाई जहाज़ मोड टॉगल करें.
- वाई-फ़ाई ऐक्सेस पॉइंट हटाना या उनमें बदलाव करना (सेटिंग).
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी बदलना (सेटिंग).
- हॉटस्पॉट कॉन्फ़िगर करना (सेटिंग).
- उपयोगकर्ता को स्विच करने की सुविधा.
इसके अलावा, कुछ ग्लोबल सेटिंग का ऐक्सेस भी ब्लॉक कर दिया जाता है. इससे खुदरा मोड पर असर पड़ सकता है. ऐसा इन सेटिंग को बंद करके किया जाता है:
- वाई-फ़ाई की सेटिंग.
- मोबाइल नेटवर्क कॉन्फ़िगरेशन के विकल्प, खास तौर पर हॉटस्पॉट.
- ब्लूटूथ कॉन्फ़िगरेशन.
- बैकअप और रीसेट, तारीख और समय, और मोबाइल नेटवर्क (ये विकल्प दिखते ही नहीं हैं).
अगर उपयोगकर्ता कुछ समय (डिफ़ॉल्ट रूप से 90 सेकंड) तक डिवाइस का इस्तेमाल नहीं करता है, तो खुदरा मोड में सिस्टम डायलॉग दिखता है. इसमें उपयोगकर्ता को सेशन से बाहर निकलने या जारी रखने का विकल्प मिलता है. अगर उपयोगकर्ता बाहर निकलने का विकल्प चुनता है या पांच सेकंड तक कोई जवाब नहीं मिलता है, तो खुदरा मोड मौजूदा डेमो उपयोगकर्ता को हटा देता है. इसके बाद, यह नए डेमो उपयोगकर्ता पर स्विच हो जाता है और ओरिजनल वीडियो को फिर से लूप करता है. अगर पावर बटन का इस्तेमाल करके स्क्रीन बंद की जाती है, तो कुछ सेकंड बाद यह अपने-आप चालू हो जाती है.
डेमो सेशन से बाहर निकलने के बाद, डिवाइस अपने-आप म्यूट हो जाते हैं. साथ ही, कुछ ग्लोबल सेटिंग रीसेट हो जाती हैं. इनमें ये शामिल हैं:
- स्क्रीन की रोशनी
- ऑटो-रोटेशन
- फ़्लैशलाइट
- भाषा
- सुलभता
रीटेल डेमो मोड से बाहर निकलना
रीटेल मोड बंद करने के लिए, रीटेल कर्मचारियों को यह पक्का करना होगा कि डेमो डिवाइस, डिवाइस मैनेजमेंट में रजिस्टर न हो. साथ ही, उन्हें बूट लोडर से डिवाइस को फ़ैक्ट्री रीसेट करना होगा.