খুচরা ডেমো মোড

অ্যান্ড্রয়েড ৭.১.১ রিটেইল ডেমো মোডের জন্য সিস্টেম-লেভেল সাপোর্ট চালু করে, যাতে গ্রাহকরা রিটেইল স্টোরগুলিতে ডিভাইসগুলি সরাসরি পরীক্ষা করতে পারেন। ডিভাইস ওনার অ্যাপ ব্যবহার করে ডিভাইসগুলিকে রিটেইল ডেমোর জন্য সেট আপ করা হয়, যাতে ডিভাইসের ব্যবহার শুধুমাত্র নির্দিষ্ট ডেমো মোড অ্যাপের মধ্যেই সীমাবদ্ধ থাকে। ব্যবহারকারীরা কোনোভাবেই রিটেইল ডেমো ডিভাইসে ব্যক্তিগত অ্যাকাউন্ট যোগ করতে পারবেন না। অ্যান্ড্রয়েড ৮.১ এই সাপোর্টটিকে সংশোধন করে DevicePolicyManager createAndManageUser API-এর মাধ্যমে ডেমো ইউজার তৈরি করার সুযোগ দেয়। এর ফলে ডেমো ডিভাইসে ইউজার ম্যানেজমেন্ট এবং ডিভাইস পলিসি ম্যানেজমেন্টের ক্ষেত্রে স্ট্যান্ডার্ড রিটেইল মোডে OEM-রা অনেক বেশি কাস্টমাইজেশনের সুযোগ পান।

যদিও Android 8.1-এর পূর্ববর্তী সংস্করণগুলিতে DevicePolicyManager API ব্যবহার করা যায়, 8.0 এবং তার পূর্ববর্তী সংস্করণগুলিতে createAndManageUser API ব্যবহার করে ডেমো-টাইপ ব্যবহারকারী ( DevicePolicyManager.MAKE_USER_DEMO ) তৈরি করা যায় না।

অ্যান্ড্রয়েড ৮.১ এবং পরবর্তী সংস্করণগুলিতে বাস্তবায়ন

এই বিভাগে প্ল্যাটফর্মের উন্নয়নগুলো তুলে ধরা হয়েছে এবং অ্যান্ড্রয়েড ৮.১ ও তার পরবর্তী সংস্করণগুলোর জন্য রিটেইল ডেমো অ্যাপটির বর্ণনা দেওয়া হয়েছে।

প্ল্যাটফর্ম পরিবর্তন

ডিভাইস_ডেমো_মোড সেট করুন

যেসব ডিভাইস ডিভাইস ওনার ভিত্তিক রিটেইল ডেমো মোড প্রয়োগ করে, সেগুলোকে প্রোভিশনিং করার আগে Settings.Global.DEVICE_DEMO_MODE কে 1-এ সেট করতে হবে, যা নির্দেশ করে যে ডিভাইসটি রিটেইল ডেমো মোডের জন্য প্রোভিশন করা হচ্ছে। SystemServer এই ফ্ল্যাগটি রিটেইল মোডের বিভিন্ন দিক, যেমন পাওয়ার প্রোফাইল এবং SystemUI, পরিচালনা করতে ব্যবহার করে।

RetailDemoModeService সক্রিয় করুন

যেসব ডিভাইসে রিটেইল ডেমো মোড প্রয়োগ করা হয়, সেগুলোর সেটআপ উইজার্ড Global.DEVICE_DEMO_MODE নামক একটি গ্লোবাল সেটিং-কে ' true তে সেট করে, যা নির্দেশ করে যে ডিভাইসটি রিটেইল মোডে প্রবেশ করেছে। এই সেটিংটি দেখার পর, RetailDemoModeService একটি ডেমো ইউজার তৈরি করে এবং ইউজার 0 চালু হলে সেটিতে সুইচ করে, একটি ওভারলে রিসোর্সে নির্দিষ্ট করা কাস্টম লঞ্চারটি সক্রিয় করে এবং SUW নিষ্ক্রিয় করে। সিস্টেম সার্ভার এবং সিস্টেমইউআই-ও রিটেইল মোডের বিভিন্ন দিক পরিচালনা করার জন্য এই ফ্ল্যাগটি ব্যবহার করে।

কাস্টম লঞ্চার বা ভিডিও প্লেয়ার সেট করুন

ডিভাইস নির্মাতারা 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 অ্যাপটি হলো অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP)-এর ডিফল্ট কাস্টম লঞ্চার। অ্যাপটি ডিভাইসের কোনো পার্টিশনে, যেমন /data/preloads/demo/retail_demo.mp4-এ, একটি ভিডিও খুঁজে বের করে এবং সেটিকে লুপে প্লে করে। যখন ব্যবহারকারী স্ক্রিনে টাচ করেন, তখন কাস্টম লঞ্চারটি তার অ্যাক্টিভিটি কম্পোনেন্ট নিষ্ক্রিয় করে দেয়, যার ফলে ডিফল্ট সিস্টেম লঞ্চারটি চালু হয়ে যায়।

কাস্টম লঞ্চারের কাস্টম কম্পোনেন্টটি ডিফল্টরূপে নিষ্ক্রিয় (disabled) হিসেবে চিহ্নিত থাকতে হবে, যাতে এটি নন-ডেমো সিনারিওতে প্রদর্শিত না হয়। ডেমো সিনারিওতে, একটি নতুন ডেমো সেশন শুরু করার সময় সিস্টেম সার্ভার নির্দিষ্ট config_demoModeLauncherComponent টিকে সক্রিয় করে।

সেটআপ উইজার্ডটি রিটেইল মোডে প্রবেশের সুযোগ করে দেওয়ার জন্য পূর্বে উল্লিখিত ভিডিওটিও খুঁজে থাকে। যদি ভিডিওটি ডেমোর অংশ না হয়, তবে রিটেইল মোড সমর্থিত কিনা তা বোঝার জন্য SUW-কে অন্য কোনো OEM-নির্দিষ্ট চিহ্ন খোঁজার জন্য পরিবর্তন করা যেতে পারে। যদি সিস্টেম A/B পার্টিশন থাকে, তবে সিস্টেম B পার্টিশনের /preloads/demo-তে ডেমো ভিডিওটি অবশ্যই থাকতে হবে। প্রথম বুটের সময় এটি /data/preloads/demo-তে কপি করা হয়।

রিটেইল ডেমো মোডের জন্য আগে থেকে লোড করা অ্যাপগুলো কাস্টমাইজ করুন

প্রি-লোডেড অ্যাপগুলো UserManager.isDemoUser() API কল করে দেখতে পারে যে অ্যাপটি একটি ডেমো পরিবেশে চালু করা হয়েছে কিনা, যার মাধ্যমে তারা রিটেইল ডেমো মোডের জন্য তাদের অভিজ্ঞতা কাস্টমাইজ করতে পারে।

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

সিস্টেম আপডেট

ডিফল্টরূপে, রিটেইল মোড চালু থাকলে, ডিভাইস পলিসি স্বয়ংক্রিয়ভাবে ওভার-দ্য-এয়ার (OTA) আপডেটের জন্য সেট করা থাকে। রিটেইল ডিভাইসগুলো ব্যবহারকারীর কোনো হস্তক্ষেপ ছাড়াই (ব্যাটারির নির্দিষ্ট সীমা মেনে) আপডেটটি ডাউনলোড, রিবুট এবং ইনস্টল করবে।

খুচরা ডেমো অ্যাপ

ডিভাইস মালিক-ভিত্তিক রিটেইল ডেমো মোড বাস্তবায়নের জন্য একটি ডিভাইস পলিসি কন্ট্রোলার অ্যাপকে ডিভাইসের মালিক হিসেবে সেট করতে হয়। AOSP-তে /packages/apps/RetailDemo ফোল্ডারে একটি রেফারেন্স RetailDemo অ্যাপ ইমপ্লিমেন্টেশন রয়েছে।

ডিভাইস ওনার অ্যাপগুলির জন্য উন্নত বিশেষাধিকার বা সিস্টেম ইমেজে পূর্ব-ইনস্টলেশনের প্রয়োজন হয় না এবং এগুলি সেটআপ বা প্রভিশনিং প্রক্রিয়ার সময় ডাউনলোড করা যেতে পারে। এগুলি বেশিরভাগ ক্ষেত্রে প্রচলিত অ্যাপের মতোই বাস্তবায়িত হয়, তবে নিম্নলিখিত পার্থক্যগুলি রয়েছে:

  • সমস্ত ডিভাইস ওনার অ্যাপকে অবশ্যই DeviceAdminReceiver কম্পোনেন্টটি এক্সটেন্ড করতে হবে, যা সমস্ত DevicePolicyManager API-এর জন্য অথরাইজেশন টোকেন হিসেবে কাজ করে। কম্পোনেন্টটির অবশ্যই android.permission.BIND_DEVICE_ADMIN পারমিশন থাকতে হবে, অনুরোধ করা বিশেষ পলিসিগুলোকে মেটাডেটা হিসেবে অন্তর্ভুক্ত করতে হবে এবং android.app.action.PROFILE_PROVISIONING_COMPLETEandroid.app.action.DEVICE_ADMIN_ENABLED ইনটেন্টগুলোকে ফিল্টার করতে হবে।

  • DevicePolicyManager#MAKE_USER_DEMO ফ্ল্যাগটি, যা বিশেষ ডেমো-টাইপ ব্যবহারকারী তৈরি করার জন্য সেট করা হয়, একটি হিডেন এপিআই। এই ফ্ল্যাগটির মান ধ্রুবক 0x4।

  • ডিভাইসের মালিকানা শুধুমাত্র ডিভাইস ম্যানেজমেন্ট রোল হোল্ডার অথবা ManagedProvisioning অ্যাপের মাধ্যমেই নির্ধারণ করতে হবে।

DevicePolicyManager ক্লাসের API-গুলো ডিভাইস মালিক (DO) এবং প্রোফাইল মালিককে (PO) বিভিন্ন ডিভাইস পলিসি প্রয়োগ করতে সক্ষম করে। রিটেইল ডেমো মোডের জন্য প্রযোজ্য DevicePolicyManager- এর কয়েকটি ফাংশন নিচে তালিকাভুক্ত করা হলো।

  • ব্যবহারকারী তৈরি ও পরিচালনা করুন।

  • ডিভাইসটি রিবুট করুন।

  • LockTask অনুমোদিত প্যাকেজগুলো সেট করুন।

  • PackageInstaller- এর মাধ্যমে প্যাকেজ ইনস্টল করুন।

  • প্যাকেজ আনইনস্টল হওয়া থেকে ব্লক করুন।

  • স্বয়ংক্রিয় সিস্টেম আপডেট চালু করুন। ডিভাইসগুলো স্বয়ংক্রিয়ভাবে OTA আপডেট ডাউনলোড ও প্রয়োগ করবে।

  • কীগার্ড নিষ্ক্রিয় করুন।

  • পাসওয়ার্ড বা ফিঙ্গারপ্রিন্ট সেট করা প্রতিরোধ করুন।

  • 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 কনফিগার করা যায়।

<!-- 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 অ্যাপটি ভিডিওটি ডাউনলোড করে এবং চালানো শুরু করে। ভিডিওটি একবার ডাউনলোড হয়ে গেলে, পরবর্তী সমস্ত ডেমো সেশনে চালানোর জন্য এটিই ব্যবহৃত হয়। পরবর্তী রিবুটের আগে পর্যন্ত এই যাচাইগুলো আর হয় না।

ডেমো ভিডিও নির্দেশিকা

ডেমোনস্ট্রেশন ভিডিও অবশ্যই পোর্ট্রেট লেআউটে অথবা ট্যাবলেট হলে ডিভাইসটির স্বাভাবিক ওরিয়েন্টেশনে হতে হবে এবং এর দৈর্ঘ্য পাঁচ সেকেন্ডের বেশি হতে পারে। কন্টেন্টটি যেন বার্ন-ইন না ঘটায়, কারণ ডিসপ্লেতে থাকাকালীন এটি ক্রমাগত চলতে থাকবে।

আরও তথ্যের জন্য অ্যান্ড্রয়েড ডেভেলপারের ব্যবহারকারী, প্রোফাইল এবং অ্যাকাউন্টের সংজ্ঞা , ডিভাইস পলিসি ম্যানেজার এপিআই ডকুমেন্টেশন এবং নমুনা ডিভাইস ওনার অ্যাপ দেখুন।

বৈধতা

CTS রিটেইল ডেমো মোড অন্তর্ভুক্ত করে না, কারণ এটি একটি ঐচ্ছিক বৈশিষ্ট্য। ডেমো অ্যাপটির জন্য টেস্টিং অবশ্যই ম্যানুয়ালি অথবা ইউনিট টেস্টের মাধ্যমে করতে হবে।

ডেমো সেশন

ডেমো সেশনের সেটআপ

ফ্যাক্টরি থেকে ডেমো মোডের জন্য কনফিগার করা থাকলে রিটেইল ডেমো ডিভাইসগুলো রিটেইল ডেমো মোডে বুট করতে পারে। বিকল্পভাবে, রিটেইল কর্মীরা সরাসরি সেটআপ উইজার্ড থেকে রিটেইল মোড চালু করতে পারেন।

Retail demo mode

চিত্র ২. খুচরা প্রদর্শন মোড

ডেমো সেশন প্রদর্শন করুন

যখন ডিভাইসটি রিটেইল মোডে প্রবেশ করে, তখন এটি একটি নতুন ডেমো ব্যবহারকারীতে পরিবর্তিত হয় এবং ইমপ্লিমেন্টেশন অংশে বর্ণিত ওভারলে রিসোর্সে নির্দিষ্ট করা কাস্টম লঞ্চারটি স্বয়ংক্রিয়ভাবে চালু করে। ডিফল্টরূপে, এই কাস্টম লঞ্চারটি ডেমো ভিডিওটি বারবার চালাতে থাকে যতক্ষণ না ব্যবহারকারী একটি ডেমো ব্যবহারকারী সেশন শুরু করার জন্য স্ক্রিনে স্পর্শ করেন। সেই সময়ে, কাস্টম লঞ্চারটি সিস্টেম লঞ্চার চালু করে এবং তারপর বন্ধ হয়ে যায়। OEM-রা কাস্টম লঞ্চারটি পরিবর্তন করে বন্ধ হওয়ার সময় অতিরিক্তভাবে অন্য কোনো পরিষেবা বা অ্যাক্টিভিটি চালু করার ব্যবস্থা করতে পারেন।

রিটেইল মোডের অখণ্ডতা বজায় রাখার জন্য, কীগার্ড নিষ্ক্রিয় করা হয়েছে এবং কুইক সেটিংস থেকে এমন কিছু কাজও নিষিদ্ধ করা হয়েছে যা রিটেইল মোডকে নেতিবাচকভাবে প্রভাবিত করতে পারে, যার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত।

  • এয়ারপ্লেন মোড টগল।
  • ওয়াই-ফাই অ্যাক্সেস পয়েন্ট অপসারণ বা পরিবর্তন করা (সেটিংস)।
  • ক্যারিয়ার পরিবর্তন (সেটিংস)।
  • হটস্পট কনফিগার করা (সেটিংস)।
  • ব্যবহারকারী পরিবর্তন।

এছাড়াও, কিছু গ্লোবাল সেটিংসে অ্যাক্সেস ব্লক করা হয় যা নিম্নলিখিত বিষয়গুলো নিষ্ক্রিয় করার মাধ্যমে রিটেইল মোডকে প্রভাবিত করতে পারে:

  • ওয়াই-ফাই সেটিংস।
  • সেলুলার নেটওয়ার্ক কনফিগারেশন অপশন, বিশেষ করে হটস্পট।
  • ব্লুটুথ কনফিগারেশন।
  • ব্যাকআপ ও রিসেট, তারিখ ও সময়, এবং মোবাইল নেটওয়ার্ক (এগুলো একেবারেই দেখা যায় না)।

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

ডেমো সেশন থেকে বেরিয়ে আসার পর, ডিভাইসগুলো স্বয়ংক্রিয়ভাবে মিউট হয়ে যায় এবং নিম্নলিখিত বিষয়গুলোসহ কিছু গ্লোবাল সেটিংস রিসেট করে:

  • উজ্জ্বলতা
  • স্বয়ংক্রিয় ঘূর্ণন
  • টর্চলাইট
  • ভাষা
  • প্রবেশগম্যতা

রিটেইল ডেমো মোড থেকে প্রস্থান করুন

রিটেইল মোড থেকে বের হওয়ার জন্য, রিটেইল কর্মীদের অবশ্যই নিশ্চিত করতে হবে যে ডেমো ডিভাইসটি ডিভাইস ম্যানেজমেন্টের অধীনে নথিভুক্ত নেই এবং বুট লোডার থেকে ডিভাইসটি ফ্যাক্টরি রিসেট করতে হবে।