সময় ওভারভিউ

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

সময় ও সময় অঞ্চলগুলির সংক্ষিপ্ত বিবরণ

স্ট্যাটাস বারের মতো স্থানে প্রদর্শনের জন্য ব্যবহারকারীর স্থানীয় সময় নির্ধারণ করতে, অ্যান্ড্রয়েড দুটি সম্পর্কিত কিন্তু স্বাধীন অবস্থার হিসাব রাখে:

  • বর্তমান ইউনিক্স ইপক সময়
  • বর্তমান সময় অঞ্চল

বর্তমান ইউনিক্স ইপক টাইম এবং বর্তমান টাইম জোন হলো ডিভাইস-ব্যাপী অবস্থা, যার অর্থ হলো এগুলি একটি ডিভাইসের সকল ব্যবহারকারীর জন্য একই থাকে।

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

বর্তমান টাইম জোন নির্ধারণ করে যে, বর্তমান ইউনিক্স ইপক টাইমকে স্থানীয় সময়ে রূপান্তর করার জন্য কী পরিমাণ সমন্বয় করতে হবে। উদাহরণস্বরূপ, লস অ্যাঞ্জেলেসে গ্রীষ্মকালে ডিভাইসটি বর্তমান ইউনিক্স ইপক টাইম থেকে ৭ ঘন্টা বিয়োগ করে এবং শীতকালে ৮ ঘন্টা বিয়োগ করে।

এই স্থানীয় সময় গণনাকে সমর্থন করার জন্য, সমস্ত অ্যান্ড্রয়েড ডিভাইসে সকল বৈশ্বিক সময় অঞ্চল নিয়মের একটি ডেটাবেস থাকে। সময় অঞ্চল নিয়ম সম্পর্কে আরও তথ্যের জন্য, সময় অঞ্চল নিয়ম দেখুন।

যখন কোনো ব্যবহারকারী ভিন্ন টাইম জোনের কোনো নতুন স্থানে যান, তখন বর্তমান ইউনিক্স ইপক টাইম সমন্বয় করার প্রয়োজন হয় না, কিন্তু ব্যবহারকারী সাধারণত তার আগের স্থানের সময়ের পরিবর্তে স্থানীয় সময় দেখতে চান। বর্তমান টাইম জোন পরিবর্তন করলে তা নিশ্চিত করে যে, নতুন স্থানের সঠিক স্থানীয় সময় প্রদর্শনের জন্য বর্তমান ইউনিক্স ইপক টাইমে সঠিক অফসেট প্রয়োগ করা হয়েছে।

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

  • স্বয়ংক্রিয় সময় শনাক্তকরণ: ডিভাইসটিতে সঠিক বর্তমান ইউনিক্স ইপক টাইম আছে কিনা তা নিশ্চিত করে।
  • স্বয়ংক্রিয় সময় অঞ্চল সনাক্তকরণ: ডিভাইসটিতে সঠিক বর্তমান সময় অঞ্চল আছে কিনা তা নিশ্চিত করে।

স্বয়ংক্রিয় সময় সনাক্তকরণ

এই বিভাগে time_detector সার্ভিসটির একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে, যা স্বয়ংক্রিয় সময় শনাক্তকরণ, ব্যবহারকারী নিয়ন্ত্রণ, কনফিগারেশন বিকল্প এবং পরীক্ষার বিবরণ পরিচালনা করে।

সময়_শনাক্তকারী পরিষেবা

অ্যান্ড্রয়েড ১০ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলিতে উপস্থিত time_detector সার্ভিসটি স্বয়ংক্রিয় সময় শনাক্তকরণ পরিচালনা করে। স্বয়ংক্রিয় সময় শনাক্তকরণ সক্রিয় করা হলে, এই সার্ভিসটি প্রয়োজন অনুযায়ী ডিভাইসের বর্তমান ইউনিক্স ইপক টাইম (Unix epoch time) সমন্বয় করে।

time_detector সার্ভিসটি সর্বদা দুটি অবস্থার একটিতে থাকে: certain বা uncertain । সার্ভিসটির certain বা uncertain অবস্থা বিভিন্ন উৎস থেকে প্রাপ্ত সময়ের পরামর্শের মাধ্যমে নির্ধারিত হয়।

যখন time_detector সার্ভিসটি certain হয়, অর্থাৎ যখন এটি ইউনিক্স ইপক টাইম তথ্যসহ কোনো সাজেশন পায়, তখন সেই সাজেশনটি বর্তমান ইউনিক্স ইপক টাইম থেকে ভিন্ন হলে, সার্ভিসটি সেটিকে ওভাররাইড করে।

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

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

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

যদিও আন্তর্জাতিকভাবে UTC সময় স্বীকৃত, তবুও অ্যান্ড্রয়েড-চালিত ডিভাইসের জন্য বর্তমান ইউনিক্স ইপক টাইম নির্ধারণ করা সবসময় সহজসাধ্য হয় না, যার বিভিন্ন কারণ রয়েছে:

  • ইউনিক্স ইপক টাইম হলো ইউটিসি টাইম থেকে সূক্ষ্মভাবে ভিন্ন একটি সময় গণনার পদ্ধতি। এই দুটির মধ্যে রূপান্তর করতে হলে লিপ সেকেন্ড কখন ঘটে এবং উৎসগুলো কীভাবে তা পরিচালনা করে, সে সম্পর্কে জ্ঞান থাকা প্রয়োজন।
  • অরিজিনগুলো শুধুমাত্র নির্দিষ্ট সময়ে বা নির্দিষ্ট পরিস্থিতিতে উপলব্ধ হতে পারে। উদাহরণস্বরূপ, যদি অরিজিনটির জন্য নেটওয়ার্ক সংযোগের প্রয়োজন হয়, তবে এটি শুধুমাত্র তখনই উপলব্ধ হতে পারে যখন ডিভাইসটি ইন্টারনেটের সাথে সংযুক্ত থাকে।
  • উৎসগুলো ভুল বা অস্পষ্ট হতে পারে, অথবা এতে ত্রুটি থাকতে পারে। উদাহরণস্বরূপ, যদি কোনো টেলিফোনি সেল টাওয়ার সঠিকভাবে UTC সময় ট্র্যাক না করে, তাহলে টেলিফোনি উৎসটি ভুল সময়ের পরামর্শ দিতে পারে।
  • ইউনিক্স ইপক টাইম নির্ধারণ করার সময় কিছু ত্রুটি থাকতে পারে। উদাহরণস্বরূপ, নেটওয়ার্ক বিলম্ব, বাফারিং বা প্রসেস শিডিউলিংয়ের কারণে ইউনিক্স ইপক টাইম ভুল হতে পারে।
  • পরামর্শটি পাওয়ার পর থেকে অতিবাহিত সময়ের জন্য পরামর্শটি সমন্বয় করতে ব্যবহৃত রেফারেন্স ঘড়িটি ভুল হতে পারে।

AOSP-তে ডিফল্টরূপে ব্যবহারের জন্য দুটি প্রধান সময় সনাক্তকরণ উৎস কনফিগার করা থাকে:

  • নেটওয়ার্ক : নেটওয়ার্ক টাইম প্রোটোকল (NTP) টাইম সার্ভার ব্যবহার করে।
  • টেলিফোনি : নেটওয়ার্ক আইডেন্টিটি অ্যান্ড টাইম জোন (NITZ) টেলিফোনি সিগন্যাল ব্যবহার করে।

টেলিফোনি এবং নেটওয়ার্ক উভয় উৎসের জন্যই বাহ্যিক নেটওয়ার্কের সাথে সংযোগ প্রয়োজন, যা সবসময় উপলব্ধ থাকে না।

অ্যান্ড্রয়েড ১২ থেকে শুরু করে, অ্যান্ড্রয়েড নিম্নলিখিত অরিজিনগুলোকেও সমর্থন করে, যেগুলো ডিফল্টরূপে ব্যবহারের জন্য কনফিগার করা থাকে না:

  • জিএনএসএস : জিপিএস অবস্থান প্রদানকারী ব্যবহার করে একটি জিএনএসএস উৎস থেকে সময় সংগ্রহ করে।
  • এক্সটার্নাল : একটি জেনেরিক উৎস যা ডিভাইস প্রস্তুতকারকদের তাদের নিজস্ব ইউনিক্স ইপক টাইম উৎস সংহত করার সুযোগ দেয়।

সময় সেটিংস

ব্যবহারকারীরা AOSP সেটিংস অ্যাপের সিস্টেম > তারিখ ও সময় বিভাগে স্বয়ংক্রিয় সময় শনাক্তকরণ চালু করতে পারেন।

সেটিংসে স্বয়ংক্রিয় সময় সনাক্তকরণ

চিত্র ১. সেটিংসে স্বয়ংক্রিয় সময় শনাক্তকরণ।

নিম্নলিখিত সারণিতে AOSP সেটিংস অ্যাপে সময় শনাক্তকরণের জন্য ব্যবহারকারী নিয়ন্ত্রণগুলি বর্ণনা করা হয়েছে।

অ্যান্ড্রয়েড ১১ এবং এর পূর্ববর্তী সংস্করণগুলোতে, এই সেটিংটির নাম দেওয়া হয়েছে ‘Use network-provided time’।

AOSP সেটিংসের অবস্থান AOSP সেটিংসের নাম পরিধি আচরণ
সিস্টেম > তারিখ এবং সময় সময় স্বয়ংক্রিয়ভাবে সেট করুন* সকল ব্যবহারকারী

একটি টগল।

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

যখন ব্যবহারকারী নিজে সময় প্রবেশ করান, তখন তিনি তাঁর স্থানীয় সময় দেন, ইউনিক্স ইপক টাইম নয়। বর্তমান টাইম জোন ব্যবহার করে ইউনিক্স ইপক টাইম গণনা করা হয়।

কনফিগারেশন

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

উৎস অগ্রাধিকার

অ্যান্ড্রয়েড ১২ থেকে, ডিভাইস নির্মাতারা core/res/res/values/config.xml কনফিগারেশন ফাইলটি পরিবর্তন করে নির্দিষ্ট করতে পারবেন যে স্বয়ংক্রিয় সময় শনাক্তকরণে কোন কোন টাইম অরিজিন অন্তর্ভুক্ত করা হবে এবং time_detector কোন অগ্রাধিকারের ভিত্তিতে এই অরিজিনগুলোকে বিবেচনা করবে।

অ্যান্ড্রয়েড ১১ বা তার নিম্নতর সংস্করণে চালিত ডিভাইসগুলির জন্য, অরিজিন প্রায়োরিটি ["telephony", "network"] হিসেবে হার্ডকোড করা থাকে, যার অর্থ হলো টেলিফোনি সাজেশনগুলি নেটওয়ার্ক সাজেশনের চেয়ে বেশি অগ্রাধিকার পায়।

ডিফল্ট AOSP কনফিগারেশনটি নিম্নরূপ:

<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
     take precedence over lower ones.
     See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
    <item>network</item>
    <item>telephony</item>
</string-array>

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

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

অনুমোদিত মূলবিন্দুর মানগুলি হলো:

অনুমোদিত সময়সীমা

অ্যান্ড্রয়েড ১৪-এ time_detector সার্ভিস দ্বারা প্রাপ্ত সময়ের পরামর্শের জন্য একটি সর্বোচ্চ সময়সীমা নির্ধারণ করা হয়েছে। যদি ডিভাইসটি ৩২-বিট প্রসেস সমর্থন করে, তবে ফ্রেমওয়ার্কটি একটি সর্বোচ্চ সময়সীমা নির্ধারণ করে দেয়, যাতে ডিভাইসটি এমন কোনো সময়ের পরামর্শ ব্যবহার করতে না পারে যা Y2038 সমস্যাটি সৃষ্টি করতে পারে।

অ্যান্ড্রয়েড ১২ একটি নিম্ন সময়সীমা চালু করেছে, যা time_detector সার্ভিস দ্বারা প্রাপ্ত সময়ের পরামর্শগুলো যাচাই করতে ব্যবহৃত হয়। স্বয়ংক্রিয় পরামর্শের জন্য ব্যবহৃত এই নিম্ন সময়সীমার মানটি বিল্ড টাইমস্ট্যাম্প থেকে নির্ধারণ করা হয়। এটি এই নীতির উপর কাজ করে যে, একটি বৈধ সময় ডিভাইসের সিস্টেম ইমেজ বিল্ড হওয়ার আগের হতে পারে না। যদি কোনো সময়ের পরামর্শ নিম্ন সময়সীমার আগের হয়, তাহলে time_detector সার্ভিসটি সেই পরামর্শটি বাতিল করে দেয়, কারণ বিল্ড টাইমস্ট্যাম্প সঠিক হলে তা বৈধ হতে পারে না।

অ্যান্ড্রয়েড ১১ বা তার নিম্নতর সংস্করণে চালিত ডিভাইসগুলিতে, time_detector পরিষেবাটি আগত ইউনিক্স ইপক টাইম সাজেশনগুলিকে যাচাই করে না।

ডিবাগিং এবং পরীক্ষার সময়

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

time_detector পরিষেবাটির সাথে ইন্টারঅ্যাক্ট করুন

time_detector সার্ভিসের time_detector এবং অবস্থা দেখতে, ব্যবহার করুন:

adb shell cmd time_detector dump

টাইম জোন ডিটেকশন ডিবাগিং ও টেস্টিংয়ের জন্য অতিরিক্ত কমান্ডগুলো দেখতে, ব্যবহার করুন:

adb shell cmd time_detector help

হেল্প আউটপুটে device_config সার্ভিসের সেইসব প্রোপার্টিগুলোরও বর্ণনা দেওয়া আছে, যেগুলো টেস্টিং বা প্রোডাকশনে time_detector এর আচরণকে প্রভাবিত করতে ব্যবহার করা যেতে পারে। বিস্তারিত জানতে, device_config সার্ভিস ব্যবহার করে একটি ডিভাইস কনফিগার করুন দেখুন।

স্বয়ংক্রিয় সময় সনাক্তকরণ যাচাই করার জন্য, পরীক্ষকদের অবশ্যই জানতে হবে যে time_detector পরিষেবাটি কোন অরিজিনগুলো ব্যবহার করছে। নিচে adb shell cmd time_detector dump কমান্ডের আউটপুটের একটি উদাহরণ দেওয়া হলো, যেখানে বর্তমান অরিজিন এবং পরিষেবার অবস্থা সম্পর্কিত তথ্য বোল্ড অক্ষরে দেওয়া হয়েছে:

$ adb shell cmd time_detector dump

TimeDetectorStrategy:
  mLastAutoSystemClockTimeSet=null
  mEnvironment.isAutoTimeDetectionEnabled()=true
  mEnvironment.elapsedRealtimeMillis()=23717241
  mEnvironment.systemClockMillis()=1626707861336
  mEnvironment.systemClockUpdateThresholdMillis()=2000
  mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
  mEnvironment.autoOriginPriorities()=[network,telephony]
  Time change log:
    ...
  Telephony suggestion history:
    ...
  Network suggestion history:
    ...
  Gnss suggestion history:
    ...
  External suggestion history:
    ...

তথ্যটিকে নিম্নোক্তভাবে ব্যাখ্যা করা যেতে পারে:

চাবি মূল্য
mEnvironment.isAutoTimeDetectionEnabled() স্বয়ংক্রিয় সময় শনাক্তকরণ সক্রিয় আছে কিনা।
mEnvironment.autoTimeLowerBound() সময়ের পরামর্শ যাচাই করার জন্য ব্যবহৃত বর্তমান নিম্নসীমা।
mEnvironment.autoOriginPriorities() ব্যবহারের উৎপত্তি এবং অগ্রাধিকারের ক্রম।

সময় পরিবর্তন লগটি সেইসব ঘটনা নির্দেশ করে যখন time_detector পরিষেবাটি ডিভাইসটির বর্তমান ইউনিক্স ইপক টাইম পরিবর্তন করেছে।

পরামর্শের ইতিহাস থেকে জানা যায় প্রতিটি উৎস থেকে কী কী পরামর্শ দেওয়া হয়েছে।

স্বয়ংক্রিয় সময় অঞ্চল সনাক্তকরণ

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

টাইম_জোন_ডিটেক্টর পরিষেবা

অ্যান্ড্রয়েড ১১ বা তার পরবর্তী সংস্করণে চালিত ডিভাইসগুলিতে উপস্থিত time_zone_detector সার্ভিসটি স্বয়ংক্রিয় টাইম জোন শনাক্তকরণ পরিচালনা করে। স্বয়ংক্রিয় টাইম জোন শনাক্তকরণ সক্রিয় করা থাকলে, এই সার্ভিসটি প্রয়োজন অনুযায়ী ডিভাইসের বর্তমান টাইম জোন সমন্বয় করে।

যখন স্বয়ংক্রিয় টাইম জোন সনাক্তকরণ সক্রিয় করা থাকে, তখন time_zone_detector দুটি অবস্থার যেকোনো একটিতে থাকতে পারে: certain ) এবং uncertain )।

যখন time_zone_detector সার্ভিসটি certain অবস্থায় থাকে, তার মানে হলো time_zone_detector নির্ভরযোগ্য টাইম জোন তথ্য পেয়েছে, যার ফলে এটি বর্তমান টাইম জোনকে ওভাররাইড করতে পারে। যখন এটি uncertain থাকে, তার মানে হলো এটি কোনো তথ্য পায়নি অথবা শুধুমাত্র দুর্বল তথ্যের ভিত্তিতে তথ্য পেয়েছে, যার ফলে এটি বর্তমান টাইম জোনকে ওভাররাইড করবে না।

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

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

একটি অ্যালগরিদম দ্বারা প্রেরিত টাইম জোন সাজেশনের মাধ্যমে time_zone_detector সার্ভিসটির certain বা uncertain অবস্থা নির্ধারণ করা হয়।

সাধারণত, সাজেশন দুই ধরনের হয় যা time_zone_detector এর সম্ভাব্য অবস্থাগুলোর সাথে ঘনিষ্ঠভাবে মিলে যায়: certain এবং uncertain । নিচে সাজেশনের প্রকারভেদের কিছু উদাহরণ দেওয়া হলো:

  • ধরণ = uncertain , zoneIds = []

    • অ্যালগরিদমটি জানে না টাইম জোন কোনটি।
  • ধরণ = certain , zoneIds = ["Europe/London"]

    • অ্যালগরিদমটি নিশ্চিত যে জোনটি হলো ইউরোপ/লন্ডন।
  • type = certain , zoneIds = [] `

    • অ্যালগরিদমটি সুনির্দিষ্ট, কিন্তু বর্তমান অবস্থানের সাথে কোনো জোন আইডি যুক্ত নেই।
  • ধরণ = certain , zoneIds = ["America/Denver", "America/Phoenix"]

    • অ্যালগরিদমটি নিশ্চিত যে উত্তরটি দুটি অঞ্চলের মধ্যে একটি, কিন্তু আমেরিকা/ডেনভার এবং আমেরিকা/ফিনিক্সের মধ্যে একটি বেছে নিতে পারছে না।

time_zone_detector পরিষেবাটি সাজেশনের ক্রমগুলিকে তাদের অ্যালগরিদমের উপর ভিত্তি করে স্বতন্ত্র হিসাবে বিবেচনা করে। অ্যালগরিদমের উপর নির্ভর করে, সাজেশনগুলিতে মেটাডেটাও থাকতে পারে যা অ্যালগরিদমটির নির্ভুলতা নির্দেশ করে।

time_zone_detector সার্ভিসটি স্টেটফুল, যার অর্থ হলো এটি প্রতিটি অ্যালগরিদমের দেওয়া সর্বশেষ পরামর্শের একটি রেকর্ড রাখে। যদি আগের কোনো পরামর্শ আর সঠিক না থাকে, অর্থাৎ, যদি কোনো অ্যালগরিদমের কাছে এখন একটি ভিন্ন পরামর্শ থাকে, অথবা যদি এটি টাইম জোন শনাক্ত করার ক্ষমতা হারিয়ে ফেলে, তাহলে time_zone_detector সার্ভিসে নতুন পরামর্শ পাঠানো হয়। পরামর্শ গ্রহণ করা হলে time_zone_detector সার্ভিসটি নতুন ও বিদ্যমান পরামর্শগুলো পুনঃমূল্যায়ন করে এবং ডিভাইসের স্টেট আপডেট করে।

অ্যান্ড্রয়েড টাইম জোন শনাক্তকরণের জন্য দুটি অ্যালগরিদম সমর্থন করে:

  • টেলিফোনি
  • অবস্থান

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

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

টেলিফোনি ফলব্যাক মোড

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

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

অ্যান্ড্রয়েড ১৪ এবং এর পরবর্তী সংস্করণগুলোতে, LTZP স্ট্যাটাস API-এর মাধ্যমে টেলিফোনি ফলব্যাক সক্রিয় করা যায়। অর্থাৎ, যদি কোনো LTZP নিজেকে অনিশ্চিত বলে রিপোর্ট করে এবং তার পারিপার্শ্বিক অবস্থার কারণে অবস্থান বা টাইম জোন শনাক্ত করার ক্ষমতা হ্রাস পায়, তাহলে টেলিফোনি ফলব্যাক মোড চালু হয়।

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

টেলিফোনি ফলব্যাক মোডের কনফিগারেশন সংক্রান্ত বিস্তারিত তথ্যের জন্য, টাইম জোন ডিটেকশন কনফিগারেশন দেখুন।

সময় অঞ্চলের সেটিংস

ব্যবহারকারীরা AOSP সেটিংস অ্যাপে স্বয়ংক্রিয় সময় অঞ্চল সনাক্তকরণের জন্য সেটিংস সক্রিয় এবং কনফিগার করতে পারেন।

সেটিংসে স্বয়ংক্রিয় সময় অঞ্চল সনাক্তকরণ

চিত্র ২. সেটিংসে স্বয়ংক্রিয় সময় অঞ্চল শনাক্তকরণ।

নিম্নলিখিত সারণিতে AOSP সেটিংস অ্যাপে সময় অঞ্চল শনাক্তকরণের জন্য ব্যবহারকারী নিয়ন্ত্রণগুলি বর্ণনা করা হয়েছে।

অ্যান্ড্রয়েড ১১ এবং এর পূর্ববর্তী সংস্করণগুলোতে, এই সেটিংটির নাম দেওয়া হয়েছে ‘Use network-provided time zone’।

AOSP সেটিংসের অবস্থান AOSP সেটিংসের নাম পরিধি আচরণ
সিস্টেম > তারিখ এবং সময় সময় অঞ্চল স্বয়ংক্রিয়ভাবে সেট করুন* সকল ব্যবহারকারী

একটি টগল।

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

সিস্টেম > তারিখ এবং সময় অবস্থান ব্যবহার করে সময় অঞ্চল নির্ধারণ করুন বর্তমান ব্যবহারকারী

একটি টগল।

অ্যান্ড্রয়েড ১২ থেকে উপলব্ধ। এই টগলটি কেবল তখনই প্রদর্শিত হয় যখন ডিভাইসটিতে অবস্থান ও সময় অঞ্চল শনাক্তকরণ সমর্থিত থাকে।

অ্যান্ড্রয়েড ১৪-এ প্রবর্তিত পরিবর্তনগুলির জন্য, ‘যেসব ডিভাইস শুধুমাত্র অবস্থান ও সময় অঞ্চল শনাক্তকরণ সমর্থন করে ’ দেখুন।

অবস্থান অবস্থান ব্যবহার করুন বর্তমান ব্যবহারকারী

একটি টগল।

সাধারণভাবে ডিভাইসের অবস্থান ব্যবহারের অনুমতি দেয় বা বাধা দেয়। ডিভাইসটিতে অবস্থান ও সময় অঞ্চল শনাক্তকরণ সমর্থিত হলে এই মানটি প্রাসঙ্গিক।

ব্যবহারকারীর নির্বাচিত সেটিংসের উপর ভিত্তি করে টাইম জোন শনাক্তকরণের ক্ষেত্রে ডিভাইসটির আচরণের একটি সংক্ষিপ্ত বিবরণ নিচে দেওয়া হলো:

  • [তারিখ ও সময়] সময় অঞ্চল স্বয়ংক্রিয়ভাবে সেট করুন: বন্ধ
    • ব্যবহারকারীকে ম্যানুয়ালি টাইম জোন নির্বাচন করতে হবে।
  • [তারিখ ও সময়] সময় অঞ্চল স্বয়ংক্রিয়ভাবে সেট করুন: চালু
    • [অবস্থান] অবস্থান ব্যবহার করুন: বন্ধ
      • সময় অঞ্চল শনাক্ত করতে টেলিফোনি সংকেত ব্যবহার করা হয়।
    • [অবস্থান] অবস্থান ব্যবহার করুন: চালু
      • [তারিখ ও সময়] সময় অঞ্চল নির্ধারণ করতে অবস্থান ব্যবহার করুন: চালু
        • সময় অঞ্চল শনাক্ত করতে অবস্থান ব্যবহার করা হয়।
      • [তারিখ ও সময়] সময় অঞ্চল নির্ধারণ করতে অবস্থান ব্যবহার করুন: বন্ধ
        • সময় অঞ্চল শনাক্ত করতে টেলিফোনি সংকেত ব্যবহার করা হয়।

একাধিক ব্যবহারকারী ডিভাইস

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

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

যে ডিভাইসগুলি শুধুমাত্র অবস্থান সময় অঞ্চল সনাক্তকরণ অ্যালগরিদম সমর্থন করে

এই অংশে সেইসব ডিভাইসের আচরণ বর্ণনা করা হয়েছে যেগুলো শুধুমাত্র অবস্থান অ্যালগরিদম সমর্থন করে।

  • অ্যান্ড্রয়েড ১৪ এবং উচ্চতর

    • AOSP সেটিংস অ্যাপে ব্যবহারকারীদের কাছে ‘ লোকেশন ব্যবহার করুন’ অপশনটি দেখানো হয় না, কিন্তু ডিভাইসটি এমনভাবে আচরণ করে যেন ‘ লোকেশন ব্যবহার করুন’ অপশনটি চালু আছে।
    • ব্যবহারকারী-ভিত্তিক SettingsProvider সেটিং location_time_zone_detection_enabled এর মান উপেক্ষা করা হয়। এই মানটি অন্যান্য ধরনের ডিভাইসে ব্যবহারকারীর পছন্দ রেকর্ড করে।
  • অ্যান্ড্রয়েড ১২ অথবা অ্যান্ড্রয়েড ১৩

    • AOSP সেটিংস অ্যাপে ‘লোকেশন ব্যবহার করুন’ অপশনটি ব্যবহারকারীরা দেখতে পান এবং তারা এই অপশনটি নিষ্ক্রিয় করতে পারেন। অপশনটি নিষ্ক্রিয় করা থাকলে, ডিভাইসটি স্বয়ংক্রিয়ভাবে টাইম জোন শনাক্ত করবে না।

স্বয়ংক্রিয় সনাক্তকরণে পরিবর্তন করার সময় এবং তা থেকে বেরিয়ে আসার সময় আচরণ

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

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

টেলিফোনি সময় অঞ্চল সনাক্তকরণ

টেলিফোনি টাইম জোন ডিটেকশন বর্তমান টাইম জোন নির্ধারণ করতে টেলিফোনি সিগন্যাল ব্যবহার করে। আরও তথ্যের জন্য, টেলিফোনি টাইম জোন ডিটেকশন দেখুন।

অবস্থান সময় অঞ্চল সনাক্তকরণ

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

অ্যান্ড্রয়েড ১২-এ প্রবর্তিত location_time_zone_manager সার্ভিসটি সিস্টেম সার্ভারে চলে এবং এতে time_zone_detector সার্ভিসে লোকেশন অ্যালগরিদম সাজেশন জমা দেওয়ার জন্য দায়ী কোড থাকে। আরও তথ্যের জন্য, লোকেশন টাইম জোন ডিটেকশন দেখুন।

বৈশিষ্ট্য গ্রহণের বিবেচ্য বিষয়গুলি

এই বিভাগে অবস্থান ও সময় অঞ্চল শনাক্তকরণ বৈশিষ্ট্যের বিভিন্ন দিক বর্ণনা করা হয়েছে, যা কোনো ডিভাইস নির্মাতাকে ডিভাইসে এই বৈশিষ্ট্যটি গ্রহণ করা হবে কি না, তা সিদ্ধান্ত নিতে সাহায্য করবে।

টেলিফোনি এবং অবস্থান সনাক্তকরণের তুলনা করুন

নিম্নলিখিত সারণিতে সময় অঞ্চল শনাক্তকরণের জন্য টেলিফোনি সংকেতের পরিবর্তে অবস্থান ব্যবহারের সুবিধা ও অসুবিধাগুলোর একটি তুলনা প্রদান করা হয়েছে।

বিভাগ টেলিফোনি সনাক্তকরণ অবস্থান সনাক্তকরণ
সঠিকতা দেশভেদে ভিন্ন হয়।

এটি এমসিসি ও এনআইটিজেড-এর সঠিকতা এবং প্রাপ্যতার উপর নির্ভর করে।
ফিচার কনফিগারেশন বা প্লাগ-ইন কম্পোনেন্টগুলোর উপর নির্ভর করে।

সঠিকতা সাধারণত নিম্নলিখিত বিষয়গুলির উপর নির্ভর করে:
  • অবস্থান প্রদানকারীর নির্ভুলতা এবং নিয়মিততা।
  • সময় অঞ্চল মানচিত্রের তথ্যের গুণমান।
আপডেটযোগ্যতা টেলিফোনি শনাক্তকরণ আপডেটেবল টাইম জোন ডেটা মডিউলে ( com.android.tzdata APEX) থাকা ফাইলগুলির উপর নির্ভর করে। ফিচার কনফিগারেশন বা প্লাগ-ইন কম্পোনেন্টগুলোর উপর নির্ভর করে।

ডিভাইসটি সার্ভার নাকি ক্লায়েন্ট টাইম জোন ম্যাপ ডেটা ব্যবহার করে, তার ওপরই সাধারণত আপডেটেবিলিটি নির্ভর করে।

অ্যান্ড্রয়েডের TZDB এবং অন্যান্য টাইম জোন তথ্য আপডেট করতে ব্যবহৃত টাইম জোন ডেটা মডিউলে টাইম জোন ম্যাপের ডেটা অন্তর্ভুক্ত থাকে না।

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

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

আরও নির্দিষ্টভাবে বলতে গেলে, টাইম জোন শনাক্তকরণ নিষ্ক্রিয় বা সক্রিয় উপায়ে কাজ করতে পারে:

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

টেলিফোনি অ্যালগরিদমের মতো পরোক্ষ শনাক্তকরণের ফলে ব্যবহারকারীদের গোপনীয়তার ক্ষেত্রে কোনো অতিরিক্ত ঝুঁকি তৈরি হয় না।

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

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

ব্যবহারকারীর গোপনীয়তা বৈশিষ্ট্য সম্পর্কে আরও বিস্তারিত জানতে, অবস্থান ও সময় অঞ্চল শনাক্তকরণ দেখুন।

কনফিগারেশন

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

AOSP-এর মূল কনফিগারেশনটি frameworks/base/core/res/res/values/config.xml ফাইলে রয়েছে।

কনফিগারেশন কী AOSP মান বর্ণনা
config_supportTelephonyTimeZoneFallback true যখন true , time_zone_detector টেলিফোনি ফলব্যাক মোড ব্যবহার করে। এটি অ্যান্ড্রয়েড ১৩ এবং তার পরবর্তী সংস্করণগুলোতে উপলব্ধ।

ডিভাইসের ডিফল্ট আচরণ পরিবর্তন করা

AOSP-তে, auto_time_zone সেটিংটি ` true সেট করা থাকলে স্বয়ংক্রিয় টাইম জোন সনাক্তকরণ ডিফল্টরূপে সক্রিয় থাকে। ডিফল্টরূপে স্বয়ংক্রিয় সময় সনাক্তকরণ নিষ্ক্রিয় করতে, frameworks/base/packages/SettingsProvider/res/values/defaults.xml ফাইলে সংজ্ঞায়িত def_auto_time_zone এর মান ` false সেট করুন।

অন্য ডিভাইস থেকে ব্যাকআপ পুনরুদ্ধার করার সময়, ফ্রেমওয়ার্ক ডিফল্টরূপে auto_time_zone সেটিং-এর মান আপডেট করে। আপনি যদি নিশ্চিত করতে চান যে এই সেটিংটি কোনো ব্যাকআপ থেকে পুনরুদ্ধার করা হবে না, frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml এ সংজ্ঞায়িত restore_blocked_global_settings অ্যারেতে auto_time_zone অন্তর্ভুক্ত করুন।

সময় অঞ্চল ডিবাগিং এবং পরীক্ষা

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

device_config পরিষেবা ব্যবহার করে একটি ডিভাইস কনফিগার করুন

device_config সার্ভিস হলো অ্যান্ড্রয়েডে ব্যবহৃত একটি ব্যবস্থা, যা সাধারণত প্রোপ্রাইটারি (নন-AOSP) কোডের মাধ্যমে একটি রিমোট সার্ভার থেকে ভ্যালু নিয়ে পরিবর্তনযোগ্য আচরণ কনফিগার করতে ব্যবহৃত হয়। পরীক্ষার জন্য device_config ভ্যালু ব্যবহার করার সময়, বিশেষ করে দীর্ঘ সময় ধরে চলা ম্যানুয়াল টেস্টের ক্ষেত্রে, ডিভাইসটি ফ্ল্যাগগুলো সিনক্রোনাইজ করতে পারে, যার ফলে ফ্ল্যাগগুলো রিসেট হয়ে যায় এবং পরীক্ষার জন্য সেট করা ভ্যালুগুলো মুছে যায়।

অ্যান্ড্রয়েড ১২ বা তার পরবর্তী সংস্করণে, ফ্ল্যাগ সিঙ্ক্রোনাইজেশন সাময়িকভাবে বন্ধ করতে, ব্যবহার করুন:

adb shell cmd device_config set_sync_disabled_for_tests persistent

টেস্টের পরে ফ্ল্যাগ সিঙ্ক্রোনাইজেশন পুনরুদ্ধার করতে, ব্যবহার করুন:

adb shell cmd device_config set_sync_disabled_for_tests none

ফ্ল্যাগ সিঙ্ক্রোনাইজেশন পুনরুদ্ধার করার পর ডিভাইসটি রিবুট করুন।

আরও তথ্যের জন্য, $ adb shell cmd device_config help ব্যবহার করুন।

time_zone_detector পরিষেবাটির সাথে ইন্টারঅ্যাক্ট করুন

time_zone_detector কনফিগারেশন এবং time_zone_detector সার্ভিসের অবস্থা দেখতে, ব্যবহার করুন:

adb shell cmd time_zone_detector dump

টাইম জোন ডিটেকশন ডিবাগিং ও টেস্টিংয়ের জন্য অতিরিক্ত কমান্ডগুলো দেখতে, ব্যবহার করুন:

adb shell cmd time_zone_detector help

হেল্প আউটপুটে device_config সার্ভিসের সেইসব প্রোপার্টিগুলোরও বর্ণনা দেওয়া আছে, যেগুলো টেস্টিং বা প্রোডাকশনের জন্য time_zone_detector সার্ভিসের আচরণকে প্রভাবিত করতে ব্যবহার করা যেতে পারে। বিস্তারিত জানতে, device_config সার্ভিস ব্যবহার করে একটি ডিভাইস কনফিগার করুন দেখুন।

টাইম জোন ডিটেকশন যাচাই করার জন্য, পরীক্ষকদের অবশ্যই জানতে হবে যে time_zone_detector কোন অ্যালগরিদম ব্যবহার করছে। time_zone_detector বর্তমান অ্যালগরিদম বুঝতে এবং প্রভাবিত করতে, নিম্নলিখিত অপশনগুলোর মধ্যে একটি ব্যবহার করুন:

  • সেটিংস UI-এর মাধ্যমে দৃশ্যত যাচাই করুন। আরও তথ্যের জন্য, টাইম জোন সেটিংস দেখুন।
  • adb-এর মাধ্যমে কমান্ড লাইন ব্যবহার করুন:

    • time_zone_detector অবস্থা ডাম্প করতে, adb shell cmd time_zone_detector dump ব্যবহার করুন।
    • ডিভাইসের সেটিং পরিবর্তন করতে, অন্যান্য time_zone_detector কমান্ড ব্যবহার করুন। আরও তথ্যের জন্য, adb shell cmd time_zone_detector help ব্যবহার করুন।

নিচে adb shell cmd time_zone_detector dump কমান্ডের আউটপুটের একটি উদাহরণ দেওয়া হলো, যেখানে বর্তমান অ্যালগরিদম এবং সার্ভিসের অবস্থা সম্পর্কিত তথ্য বোল্ড অক্ষরে দেওয়া হয়েছে:

$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
  mEnvironment.getCurrentUserId()=0
  mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
  [Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
  mEnvironment.isDeviceTimeZoneInitialized()=true
  mEnvironment.getDeviceTimeZone()=Europe/London
  Time zone change log:
  Manual suggestion history:
...
  Geolocation suggestion history:
...
  Telephony suggestion history:
...

তথ্যটিকে নিম্নোক্তভাবে ব্যাখ্যা করা যেতে পারে:

চাবি মূল্য
mUserConfigAllowed ডিভাইস পলিসি কন্ট্রোলার দ্বারা ব্যবহারকারীকে তারিখ ও সময় সেটিংস নিয়ন্ত্রণ করা থেকে বিরত রাখা হচ্ছে কিনা।
mTelephonyDetectionSupported ডিভাইসটিতে টেলিফোনি টাইম জোন শনাক্তকরণের ব্যবস্থা আছে কিনা।
mGeoDetectionSupported ডিভাইসটি অবস্থান ও সময় অঞ্চল শনাক্তকরণ সমর্থন করে কিনা। কনফিগারেশন এবং অন্তত একটি এলটিজেডপি (LTZP)-এর উপস্থিতির উপর ভিত্তি করে এটিই হলো কার্যকর অবস্থা।
mAutoDetectionEnabled স্বয়ংক্রিয় সময় অঞ্চল সনাক্তকরণ সক্রিয় করা আছে কিনা।
mLocationEnabled মূল অবস্থান টগল।
mGeoDetectionEnabled অ্যালগরিদম সুইচ: false টেলিফোনি অ্যালগরিদম নির্দেশ করে, এবং true লোকেশন অ্যালগরিদম নির্দেশ করে।

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