Android 7.1.1-এ রিটেল ডেমো মোডের জন্য সিস্টেম-লেভেল সহায়তা চালু করা হয়েছে যাতে গ্রাহকরা রিটেল স্টোরে ডিভাইস অ্যাকশনে আছে কিনা তা পরীক্ষা করে দেখতে পারেন। ডিভাইস মালিকের অ্যাপ ব্যবহার করে রিটেল ডেমোর জন্য ডিভাইস সেট-আপ করা হয় যাতে ডিভাইসের ব্যবহার শুধুমাত্র নির্দিষ্ট ডেমো মোড অ্যাপের মধ্যে সীমাবদ্ধ থাকে। রিটেল ডেমো ডিভাইসে গ্রাহক কোনও ব্যক্তিগত অ্যাকাউন্ট যোগ করতে পারবেন না। Android 8.1 এই সহায়তাকে সংশোধন করে DevicePolicyManager createAndManageUser API-এর মাধ্যমে ডেমো ব্যবহারকারী তৈরি করে। এটি ডেমো ডিভাইসে ব্যবহারকারী ম্যানেজমেন্ট ও ডিভাইস নীতি ম্যানেজমেন্টের ক্ষেত্রে স্ট্যান্ডার্ড রিটেল মোডে অনেক বেশি OEM কাস্টমাইজেশনের অনুমতি দেয়।
Android 8.1-এর আগের ভার্সনে DevicePolicyManager
API ব্যবহার করা গেলেও,
8.0 এবং তার আগের ভার্সনে createAndManageUser
API-এর মাধ্যমে ডেমো-টাইপ ব্যবহারকারী (DevicePolicyManager.MAKE_USER_DEMO)
তৈরি করা যাবে না।
Android 8.1 ও তার পরবর্তী যেকোনও ভার্সনে প্রয়োগ করা
এই বিভাগে প্ল্যাটফর্মের উন্নতি হাইলাইট করা হয়েছে এবং Android 8.1 ও তার পরবর্তী ভার্সনে রিটেল ডেমো অ্যাপের বর্ণনা দেওয়া হয়েছে।
প্ল্যাটফর্মে পরিবর্তন
DEVICE_DEMO_MODE সেট করুন
ডিভাইস মালিকের উপর ভিত্তি করে রিটেল ডেমো মোড প্রয়োগ করা ডিভাইসকে অবশ্যই
প্রভিশনিং করার আগে
Settings.Global.DEVICE_DEMO_MODE-এর মান ১ হিসেবে সেট করতে হবে, যাতে বোঝা যায় যে ডিভাইসটি রিটেল ডেমো
মোডের জন্য প্রভিশন করা হচ্ছে।
SystemServer
এই ফ্ল্যাগ ব্যবহার করে রিটেল মোডের বিভিন্ন দিক ম্যানেজ করে, যেমন পাওয়ার প্রোফাইল ও
SystemUI.
RetailDemoModeService চালু করুন
যেসব ডিভাইসে রিটেল ডেমো মোড প্রয়োগ করা হয়, সেগুলিতে সেট-আপ উইজার্ড একটি গ্লোবাল
সেটিং
Global.DEVICE_DEMO_MODE true হিসেবে সেট করে, এর মাধ্যমে বোঝানো হয় যে ডিভাইসটি রিটেল মোডে প্রবেশ করেছে। এই সেটিং
দেখার পরে, RetailDemoModeService একটি ডেমো ব্যবহারকারী তৈরি করে এবং ব্যবহারকারী ০ চালু হলে সেটিতে পরিবর্তন করে, ওভারলে রিসোর্সে নির্দিষ্ট করা কাস্টম লঞ্চার চালু করে
এবং 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)-এ /packages/apps/RetailDemo লোকেশন থাকা খুচরা বিক্রয়ের ডেমো DemoPlayer অ্যাপ হল ডিফল্ট কাস্টম লঞ্চার। অ্যাপটি ডিভাইস পার্টিশনে /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-তে /packages/apps/RetailDemo-তে একটি রেফারেন্স RetailDemo অ্যাপ ইমপ্লিমেন্টেশন রয়েছে।
ডিভাইস মালিকানা অ্যাপের জন্য উন্নত বিশেষ সুবিধা বা সিস্টেম ইমেজে আগে থেকে ইনস্টল করার প্রয়োজন নেই এবং সেট-আপ বা প্রভিশনিং প্রসেস চলাকালীন এটি ডাউনলোড করা যেতে পারে। এগুলি বেশিরভাগই চিরাচরিত অ্যাপের মতো প্রয়োগ করা হয়, তবে নিম্নলিখিত পার্থক্যগুলি রয়েছে:
ডিভাইসের মালিকের সব অ্যাপকে DeviceAdminReceiver কম্পোনেন্ট এক্সটেন্ড করতে হবে, যা সব DevicePolicyManager API-এর জন্য অনুমোদনের টোকেন হিসেবে কাজ করে। কম্পোনেন্টে
android.permission.BIND_DEVICE_ADMINঅনুমতি থাকতে হবে, মেটাডেটা হিসেবে অনুরোধ করা বিশেষ নীতি অন্তর্ভুক্ত করতে হবে এবংandroid.app.action.PROFILE_PROVISIONING_COMPLETEওandroid.app.action.DEVICE_ADMIN_ENABLEDইনটেন্ট ফিল্টার করতে হবে।DevicePolicyManager#MAKE_USER_DEMO ফ্ল্যাগ, যা বিশেষ ডেমো-টাইপ ব্যবহারকারী তৈরি করার জন্য সেট করা হয়, এটি একটি লুকানো API। এই ফ্ল্যাগের মান হল কনস্ট্যান্ট 0x4.
ডিভাইসের মালিকানা শুধুমাত্র ডিভাইস ম্যানেজমেন্ট রোল হোল্ডার বা ManagedProvisioning অ্যাপের মাধ্যমে অ্যাসাইন করতে হবে।
DevicePolicyManager ক্লাসের API ডিভাইস মালিক (DO) ও প্রোফাইল মালিক (PO)-কে বিভিন্ন ডিভাইস নীতি প্রয়োগ করতে দেয়। রিটেল ডেমো মোডের জন্য প্রযোজ্য DevicePolicyManager ফাংশনের মধ্যে কিছু নিচে তালিকাভুক্ত করা হল।
ব্যবহারকারী তৈরি ও ম্যানেজ করা।
ডিভাইস রিবুট করুন।
LockTask-এর অনুমোদিত প্যাকেজ সেট করুন।
PackageInstaller-এর মাধ্যমে প্যাকেজ ইনস্টল করুন।
প্যাকেজ আনইনস্টল করা থেকে ব্লক করুন।
অটোমেটিক সিস্টেম আপডেট চালু করুন। ডিভাইস অটোমেটিক OTA আপডেট ডাউনলোড ও প্রয়োগ করবে।
কীগার্ড বন্ধ করুন।
পাসওয়ার্ড বা ফিঙ্গারপ্রিন্ট সেট করা আটকায়।
Settings.Global, Settings.Secure, এবং Settings.System সেটিংসের অনুমোদিত তালিকা সেট করুন।
অনুমতি সংক্রান্ত নীতি
PERMISSION_POLICY_AUTO_GRANT-এ সেট করুন, যা অটোমেটিক সব রানটাইম অনুমতি দেয়। আরও নির্দিষ্টভাবে অনুমতি দেওয়া যেতে পারে: একটি অ্যাপকে একটি অনুমতি। এটি অ্যাপ-অপস অনুমতির ক্ষেত্রে প্রযোজ্য নয়, যা ব্যবহারকারীদের এখনও প্রতি-ব্যবহারকারী, প্রতি-অ্যাপ ভিত্তিতে দিতে হবে।UserManager-এ যেমন উল্লেখ করা আছে, সেই অনুযায়ী রিটেল মোডের সাথে প্রাসঙ্গিক ব্যবহারকারীর বিধিনিষেধ সেট করুন।
DISALLOW_MODIFY_ACCOUNTSDISALLOW_USB_FILE_TRANSFERDISALLOW_DEBUGGING_FEATURESDISALLOW_CONFIG_WIFIDISALLOW_CONFIG_BLUETOOTHDISALLOW_INSTALL_UNKNOWN_SOURCESDISALLOW_CONFIG_MOBILE_NETWORKS
ওয়েব ব্যবহার করে ডেমো ভিডিও আপডেট করা
/packages/apps/RetailDemo-এ থাকা RetailDemo অ্যাপে নেটওয়ার্ক কানেক্টিভিটি থাকলে ডেমো ভিডিও আপডেট করার ক্ষমতা আছে। RetailDemo অ্যাপে নিম্নলিখিত স্ট্রিং ভ্যালু ওভাররাইড করে ভিডিও ডাউনলোড করার URL কনফিগার করা যেতে পারে।
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
আলাদা আলাদা অঞ্চলে আলাদা আলাদা ভিডিও ব্যবহার করতে হলে, res/values-*/strings.xml-এ লোকাল-নির্দিষ্ট স্ট্রিং রিসোর্স ব্যবহার করে আলাদা আলাদা ডাউনলোড URL কনফিগার করা যেতে পারে। যেমন, মার্কিন যুক্তরাষ্ট্র ও গ্রেট ব্রিটেনে আলাদা আলাদা ভিডিও ব্যবহার করতে হলে, সংশ্লিষ্ট ডাউনলোড URL যথাক্রমে res/values-en-rUS/strings.xml ও res/values-en-rGB/strings.xml-এ নিচে দেখানো পদ্ধতিতে প্লেস করা যেতে পারে।
In 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 ডেভেলপার সংজ্ঞা, ডিভাইস নীতি ম্যানেজার API ডকুমেন্টেশন এবং স্যাম্পেল ডিভাইস মালিক অ্যাপ দেখুন।
যাচাইকরণ
CTS-এ রিটেল ডেমো মোড কভার করা হয় না কারণ এটি একটি ঐচ্ছিক ফিচার। পরীক্ষা অবশ্যই ম্যানুয়ালি বা ডেমো অ্যাপের জন্য ইউনিট টেস্টের মাধ্যমে করতে হবে।
ডেমো সেশন
ডেমো সেশন সেট-আপ করা
ফ্যাক্টরি থেকে ডেমো মোডের জন্য কনফিগার করা থাকলে, রিটেল ডেমো ডিভাইস রিটেল ডেমো মোডে বুট হতে পারে। অন্যথায়, রিটেল কর্মচারীরা সেট-আপ উইজার্ড থেকে সরাসরি রিটেল মোড চালু করতে পারেন।

ছবি ২. রিটেল ডেমোস্ট্রেশন মোড
ডেমো সেশন দেখানো
ডিভাইস রিটেল মোডে প্রবেশ করলে, এটি একটি নতুন ডেমো ব্যবহারকারীতে পরিবর্তন হয় এবং ওভারলে রিসোর্সে নির্দিষ্ট করা কাস্টম লঞ্চার অটোমেটিক চালু করে যা ইমপ্লিমেন্টেশন বিভাগে বর্ণনা করা হয়েছে। সাধারণত, ব্যবহারকারী ডেমো ব্যবহারকারী সেশন শুরু করার জন্য স্ক্রিন টাচ না করা পর্যন্ত, এই কাস্টম লঞ্চার ডেমো ভিডিওটি বারবার চালায়। সেই সময়, কাস্টম লঞ্চার সিস্টেম লঞ্চার চালু করে এবং তারপর বেরিয়ে যায়। OEM কাস্টম লঞ্চার পরিবর্তন করতে পারে যাতে বেরিয়ে আসার সময় অতিরিক্ত অন্য কোনও পরিষেবা বা অ্যাক্টিভিটি লঞ্চ করা যায়।
রিটেল মোডের অখণ্ডতা বজায় রাখতে, কীগার্ড বন্ধ করা হয় এবং কুইক সেটিংসের কিছু অ্যাকশন যা রিটেল মোডের উপর খারাপ প্রভাব ফেলতে পারে, সেগুলিও অনুমতি দেওয়া হয় না, এর মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত।
- বিমান মোড টগল করুন।
- ওয়াই-ফাই অ্যাক্সেস পয়েন্ট (সেটিংস) সরানো বা পরিবর্তন করা।
- পরিষেবা প্রদানকারী পরিবর্তন করা (সেটিংস)।
- হটস্পট কনফিগার করা (সেটিংস)।
- ব্যবহারকারী পরিবর্তন করা।
এছাড়াও, কিছু গ্লোবাল সেটিংসের অ্যাক্সেসও ব্লক করা হয় যা নিম্নলিখিতগুলি বন্ধ করে রিটেল মোডকে প্রভাবিত করতে পারে:
- ওয়াই-ফাই সেটিংস।
- মোবাইল নেটওয়ার্ক কনফিগারেশন বিকল্প, বিশেষ করে হটস্পট।
- ব্লুটুথ কনফিগারেশন।
- ব্যাক-আপ ও রিসেট, তারিখ ও সময় এবং মোবাইল নেটওয়ার্ক (এগুলি একেবারেই দেখা যায় না)।
ব্যবহারকারী কিছু সময় ধরে (ডিফল্ট হিসেবে ৯০ সেকেন্ড) নিষ্ক্রিয় থাকলে, রিটেল মোড ব্যবহারকারীকে সেশন থেকে বেরিয়ে আসতে বা চালিয়ে যেতে প্রম্পট করার জন্য একটি সিস্টেম ডায়ালগ দেখায়। ব্যবহারকারী বেরিয়ে যাওয়ার বিকল্প বেছে নিলে অথবা পাঁচ সেকেন্ড কোনও উত্তর না পেলে, রিটেল মোড বর্তমান ডেমো ব্যবহারকারীকে সরিয়ে দেয়, নতুন ডেমো ব্যবহারকারীতে পরিবর্তন করে এবং আবার আসল ভিডিওটি লুপ করে। পাওয়ার বোতাম ব্যবহার করে স্ক্রিন বন্ধ করা হলে, কয়েক সেকেন্ড পরে এটি অটোমেটিক আবার চালু হয়ে যায়।
ডেমো সেশন থেকে বেরিয়ে আসার পরে, ডিভাইস অটোমেটিক মিউট হয়ে যায় এবং কিছু গ্লোবাল সেটিংস রিসেট হয়ে যায়, যার মধ্যে নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:
- উজ্জ্বলতা
- অটো-রোটেট
- ফ্ল্যাশলাইট
- ভাষা
- অ্যাক্সেসিবিলিটি
রিটেল ডেমো মোড থেকে বেরিয়ে আসা
রিটেল মোড থেকে বেরিয়ে আসতে, রিটেল কর্মীদের অবশ্যই নিশ্চিত করতে হবে যে ডেমো ডিভাইসটি ডিভাইস ম্যানেজমেন্টের অধীনে এনরোল করা নেই এবং বুট লোডার থেকে ডিভাইসটি ফ্যাক্টরি রিসেট করতে হবে।