Android 7.1.1 में, रीटेल डेमो मोड के लिए सिस्टम-लेवल की सहायता शुरू की गई है, ताकि खरीदार खुदरा दुकानों पर डिवाइसों को इस्तेमाल करके देख सकें. डिवाइसों को रीटेल डेमो के लिए, डिवाइस के मालिक वाले ऐप्लिकेशन का इस्तेमाल करके सेट अप किया जाता है. इससे यह पक्का किया जा सकता है कि डिवाइस का इस्तेमाल, सिर्फ़ डेमो मोड वाले कुछ ऐप्लिकेशन के लिए किया जाए. असली उपयोगकर्ताओं को रीटेल डेमो डिवाइस पर निजी खाता जोड़ने की सुविधा नहीं देनी चाहिए. Android 8.1 इस सहायता में बदलाव करता है, ताकि DevicePolicyManager createAndManageUser एपीआई की मदद से डेमो उपयोगकर्ता बनाए जा सकें. इससे डेमो डिवाइस पर यूज़र मैनेजमेंट और डिवाइस नीति मैनेजमेंट के हिसाब से, ओईएम को स्टैंडर्ड रीटेल मोड में पसंद के मुताबिक बनाने की सुविधा मिलती है.
DevicePolicyManager एपीआई का इस्तेमाल, Android 8.1 से पहले के वर्शन पर किया जा सकता है. हालांकि, डेमो-टाइप इस्तेमाल करने वाले उपयोगकर्ता (DevicePolicyManager.MAKE_USER_DEMO
) को 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.xml फ़ाइल में दिए गए फ़्रेमवर्क रिसॉर्स config_demoModeLauncherComponent
को इस तरह बदलकर, एक कस्टम लॉन्चर तय कर सकते हैं.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
/packages/apps/retailDemo पर मौजूद रीटेल डेमो DemoPlayer ऐप्लिकेशन, Android ओपन सोर्स प्रोजेक्ट (एओएसपी) में डिफ़ॉल्ट कस्टम लॉन्चर है. ऐप्लिकेशन, डिवाइस के पार्टीशन में /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) खाता डालने के लिए नहीं कहेंगे. हमारा सुझाव है कि OEM ऐप्लिकेशन यह भी देखें कि DISALLOW_MODIFY_ACCOUNTS
को सेट किया गया है या नहीं. साथ ही, वे स्थिति को उसके हिसाब से हैंडल करें.
सिस्टम अपडेट
रीटेल मोड चालू होने पर, डिवाइस की नीति डिफ़ॉल्ट रूप से, ऑवर-द-एयर (ओटीए) अपडेट पर सेट हो जाती है. रीटेल डिवाइस, उपयोगकर्ता के इंटरैक्शन के बिना ही अपडेट (बैटरी थ्रेशोल्ड को ध्यान में रखते हुए) डाउनलोड, फिर से चालू, और इंस्टॉल करेंगे.
रीटेल डेमो ऐप्लिकेशन
डिवाइस के मालिक के हिसाब से रीटेल डेमो मोड लागू करने के लिए, डिवाइस नीति कंट्रोलर ऐप्लिकेशन को डिवाइस के मालिक के तौर पर सेट करना ज़रूरी है. एओएसपी में, /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 है.
डिवाइस का मालिकाना हक सिर्फ़ डिवाइस मैनेजमेंट की भूमिका वाले व्यक्ति या मैनेज किए जा रहे प्रावधान ऐप्लिकेशन को असाइन किया जाना चाहिए.
DevicePolicyManager क्लास के एपीआई, डिवाइस की अलग-अलग नीतियां लागू करने के लिए डिवाइस का मालिक (DO) और प्रोफ़ाइल का मालिक (पीओ) चालू करते हैं. रीटेल डेमो मोड के लिए लागू होने वाले DevicePolicyManager के कुछ फ़ंक्शन यहां दिए गए हैं.
उपयोगकर्ताओं की प्रोफ़ाइलें बनाई जा सकती हैं और उन्हें मैनेज किया जा सकता है.
डिवाइस को रीबूट करें.
LockTask की अनुमति वाले पैकेज सेट करें.
पैकेज इंस्टॉलर की मदद से पैकेज इंस्टॉल करें.
पैकेज को अनइंस्टॉल होने से रोकें.
सिस्टम के अपडेट अपने-आप होने की सुविधा चालू करें. डिवाइस पर ओटीए अपडेट अपने-आप डाउनलोड और लागू हो जाएंगे.
कीगार्ड की सुविधा बंद करें.
पासवर्ड या फ़िंगरप्रिंट सेट करने से रोकें.
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 डेवलपर की परिभाषाएं, डिवाइस पॉलिसी मैनेजर एपीआई से जुड़े दस्तावेज़, और डिवाइस के मालिक के तौर पर इस्तेमाल किए गए सैंपल देखें.
पुष्टि करें
सीटीएस में रीटेल डेमो मोड शामिल नहीं है, क्योंकि यह एक वैकल्पिक सुविधा है. डेमो ऐप्लिकेशन की जांच, मैन्युअल तरीके से या यूनिट टेस्ट की मदद से की जानी चाहिए.
डेमो सेशन
डेमो सेशन का सेटअप
फ़ैक्ट्री से डेमो मोड के लिए कॉन्फ़िगर किए जाने पर रीटेल डेमो डिवाइस में रीटेल डेमो मोड चालू हो सकता है. इसके अलावा, खुदरा दुकानदार सीधे सेटअप विज़र्ड से खुदरा मोड चालू कर सकते हैं.
दूसरी इमेज. खुदरा प्रदर्शन मोड
डेमो सेशन दिखाएं
जब डिवाइस रीटेल मोड में जाता है, तो यह एक नए डेमो उपयोगकर्ता पर स्विच करता है. साथ ही, ओवरले संसाधन में तय किया गया कस्टम लॉन्चर अपने-आप चालू करता है. इसके बारे में लागू करने की प्रोसेस में बताया गया है. डिफ़ॉल्ट रूप से, यह कस्टम लॉन्चर तब तक डेमो वीडियो को बार-बार चलाता है, जब तक कि उपयोगकर्ता डेमो उपयोगकर्ता सेशन शुरू करने के लिए स्क्रीन को नहीं छूता. उस समय, कस्टम लॉन्चर, सिस्टम लॉन्चर को शुरू करता है और फिर बाहर निकल जाता है. OEM, कस्टम लॉन्चर में बदलाव करके, ऐप्लिकेशन से बाहर निकलने पर कोई दूसरी सेवा या गतिविधि भी लॉन्च कर सकते हैं.
रीटेल मोड को सुरक्षित बनाए रखने के लिए, कीगार्ड बंद कर दिया गया है. साथ ही, क्विक सेटिंग से रीटेल मोड पर बुरा असर डालने वाली कुछ कार्रवाइयों की भी अनुमति नहीं है. इनमें ये कार्रवाइयां शामिल हैं.
- हवाई जहाज़ मोड टॉगल.
- वाई-फ़ाई ऐक्सेस पॉइंट हटाना या उनमें बदलाव करना (सेटिंग).
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी बदलना (सेटिंग).
- हॉटस्पॉट कॉन्फ़िगर करना (सेटिंग).
- उपयोगकर्ता स्विच करना.
इसके अलावा, कुछ ग्लोबल सेटिंग का ऐक्सेस भी ब्लॉक किया जाता है. इन सेटिंग को बंद करने पर, रीटेल मोड पर असर पड़ सकता है:
- वाई-फ़ाई की सेटिंग.
- सेल्युलर नेटवर्क कॉन्फ़िगरेशन के विकल्प, खास तौर पर हॉटस्पॉट.
- ब्लूटूथ कॉन्फ़िगरेशन.
- बैकअप और रीसेट, तारीख और समय, और मोबाइल नेटवर्क (ये बिल्कुल नहीं दिखते).
अगर उपयोगकर्ता कुछ समय (डिफ़ॉल्ट रूप से 90 सेकंड) तक कोई कार्रवाई नहीं करता है, तो रीटेल मोड में एक सिस्टम डायलॉग दिखता है. इसमें उपयोगकर्ता को सेशन से बाहर निकलने या जारी रखने के लिए कहा जाता है. अगर उपयोगकर्ता, बंद करने का विकल्प चुनता है या पांच सेकंड तक कोई जवाब नहीं आता, तो रीटेल मोड मौजूदा डेमो उपयोगकर्ता को हटा देता है, एक नए डेमो उपयोगकर्ता पर स्विच करता है, और ओरिजनल वीडियो को फिर से लूप में ले जाता है. अगर स्क्रीन को पावर बटन का इस्तेमाल करके बंद किया जाता है, तो कुछ सेकंड बाद यह अपने-आप चालू हो जाती है.
डेमो सेशन से बाहर निकलने के बाद, डिवाइस अपने-आप म्यूट हो जाते हैं और कुछ ग्लोबल सेटिंग रीसेट हो जाती हैं. इनमें ये सेटिंग भी शामिल हैं:
- स्क्रीन की रोशनी
- ऑटो-रोटेट
- फ़्लैशलाइट
- भाषा
- सुलभता
रीटेल डेमो मोड से बाहर निकलना
रीटेल मोड से बाहर निकलने के लिए, खुदरा कर्मचारियों को यह पक्का करना होगा कि डेमो डिवाइस को डिवाइस मैनेजमेंट के तहत रजिस्टर न किया गया हो. साथ ही, बूट लोडर से डिवाइस को फ़ैक्ट्री रीसेट भी करना होगा.