Android-এ সময় ও টাইম জোন শনাক্তকরণ কীভাবে কাজ করে তা এই পৃষ্ঠায় বর্ণনা করা হয়েছে। এর মধ্যে Android কীভাবে অটোমেটিক সময় ও টাইম জোন শনাক্ত করে, ডিভাইস প্রস্তুতকারকদের জন্য কনফিগারেশন বিকল্প এবং টেস্টিং সংক্রান্ত তথ্য অন্তর্ভুক্ত।
সময় ও টাইম জোন সম্পর্কে এক ঝলকে
স্ট্যাটাস বারের মতো লোকেশনে দেখানোর জন্য ব্যবহারকারীর স্থানীয় সময় নির্ধারণ করতে, Android দুটি সম্পর্কিত কিন্তু স্বতন্ত্র স্টেট ট্র্যাক করে:
- বর্তমান Unix epoch সময়
- বর্তমান টাইম জোন
বর্তমান Unix epoch সময় এবং বর্তমান টাইম জোন হল ডিভাইস-ব্যাপী স্ট্যাটাস, যার অর্থ হল ডিভাইসের সব ব্যবহারকারী এগুলি শেয়ার করেন।
বর্তমান Unix সময় কোনও নির্দিষ্ট ভ্যালু নয়। সময় অতিবাহিত হওয়ার সাথে সাথে এই মান অটোমেটিক আপডেট হয়। সময়ের স্বাভাবিক প্রবাহ ছাড়াও, কোনও ডিভাইসের বর্তমান Unix epoch সময় ভুল বলে শনাক্ত হলে তা অ্যাডজাস্ট করা হয়, যেমন, ডিভাইসের চার্জ শেষ হয়ে যাওয়ার পরে।
বর্তমান টাইম জোন নির্ধারণ করে যে বর্তমান Unix epoch সময়কে স্থানীয় সময়ে পরিবর্তন করতে কতটা অ্যাডজাস্ট করতে হবে। যেমন, লস অ্যাঞ্জেলসে গ্রীষ্মকালে, ডিভাইসটি বর্তমান Unix epoch সময় থেকে ৭ ঘণ্টা বিয়োগ করে এবং শীতকালে এটি ৮ ঘণ্টা বিয়োগ করে।
এইসব স্থানীয় সময় গণনাকে সমর্থন করতে, সব Android ডিভাইসে বিশ্বের সব টাইম জোন সংক্রান্ত নিয়মের একটি ডেটাবেস থাকে। টাইম জোন সংক্রান্ত নিয়ম সম্পর্কে আরও জানতে, টাইম জোন সংক্রান্ত নিয়ম দেখুন।
কোনও ব্যবহারকারী অন্য টাইম জোন ব্যবহার করা হয় এমন কোনও নতুন লোকেশনে গেলে, বর্তমান Unix epoch টাইম অ্যাডজাস্ট করার প্রয়োজন হয় না, তবে ব্যবহারকারী সাধারণত তার আগের লোকেশনের সময়ের পরিবর্তে স্থানীয় সময় দেখতে চান। বর্তমান টাইম জোন পরিবর্তন করলে, নতুন লোকেশনের জন্য সঠিক স্থানীয় সময় দেখানোর জন্য বর্তমান Unix epoch সময়ে সঠিক অফসেট প্রয়োগ করা হয়েছে কিনা তা নিশ্চিত করা হয়।
AOSP ব্যবহারকারীদের স্বতন্ত্রভাবে নিয়ন্ত্রণ করতে দেয় যে নিম্নলিখিত পদ্ধতির মাধ্যমে তাদের জন্য সময় এবং টাইম জোন অটোমেটিক সেট করা হবে কিনা।
- অটোমেটিক সময় শনাক্তকরণ: ডিভাইসে সঠিক বর্তমান Unix epoch সময় আছে কিনা তা নিশ্চিত করে।
- অটোমেটিক টাইম জোন শনাক্তকরণ: এটি নিশ্চিত করে যে ডিভাইসে সঠিক বর্তমান টাইম জোন আছে।
অটোমেটিক সময় শনাক্তকরণ
এই বিভাগে time_detector পরিষেবার ওভারভিউ দেওয়া হয়েছে যা অটোমেটিক সময় শনাক্তকরণ, ব্যবহারকারীর কন্ট্রোল, কনফিগারেশন বিকল্প এবং টেস্টিংয়ের বিবরণ ম্যানেজ করে।
time_detector পরিষেবা
Android 10 বা এর পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে উপলভ্য time_detector পরিষেবা,
অটোমেটিক সময় শনাক্তকরণ ম্যানেজ করে। অটোমেটিক সময় শনাক্তকরণ চালু করা থাকলে, প্রয়োজনমতো পরিষেবাটি ডিভাইসের
বর্তমান Unix epoch টাইম অ্যাডজাস্ট করে।
time_detector পরিষেবা সবসময় দু'টি অবস্থার মধ্যে একটিতে থাকে: certain অথবা
uncertain. পরিষেবার certain বা uncertain স্ট্যাটাস সময়ের
সাজেশন দ্বারা নির্ধারিত হয় যা এটি বিভিন্ন সোর্স থেকে পায়।
time_detector পরিষেবা certain হলে, অর্থাৎ এটি Unix epoch সময় সংক্রান্ত তথ্য সহ সাজেশন পেলে, সাজেশন দেওয়া সময় বর্তমান Unix epoch সময়ের থেকে আলাদা হলে এটি বর্তমান Unix epoch
সময়কে ওভাররাইড করে।
time_detector uncertain হলে, এটি বর্তমান সময়কে ওভাররাইড করে না। uncertain স্ট্যাটাসের অর্থ হল, time_detector পরিষেবা সময়ের সাজেশন পায়নি। এছাড়াও, time_detector পরিষেবাটি uncertain হয়ে যায় যদি এটি পাওয়া পরামর্শ
ব্যবহার করার জন্য খুব পুরনো বলে বিবেচনা করা হয়। সাজেশনের বয়স বিবেচনা করা হয়, কারণ পুরনো Unix epoch টাইম সাজেশন ব্যবহার করে করা অ্যাডজাস্টমেন্ট
ডিভাইসে অতিবাহিত রিয়েলটাইম ক্লকের উপর নির্ভর করে, যা
দীর্ঘ সময় ধরে ভুল বলে ধরে নেওয়া হয়।
বর্তমান Unix এপক টাইম অটোমেটিক সেট করার জন্য, ডিভাইসের কাছে বিভিন্ন
সোর্স থাকে যা এটি ব্যবহার করতে পারে। এই ডকুমেন্টে এগুলিকে উৎস বলা হয়। পরিষেবা
time_detectorসাজেশনের ক্রমকে
তাদের উৎস অনুযায়ী আলাদা আলাদা হিসেবে বিবেচনা করে।
time_detector পরিষেবাটি স্টেটফুল, যার অর্থ হল এটি প্রতিটি অরিজিন থেকে করা
সবচেয়ে সাম্প্রতিক সাজেশন রেকর্ড রাখে। কোনও অরিজিনে আরও সাম্প্রতিক Unix epoch সময়ের তথ্য উপলভ্য থাকলে,
time_detector-এ নতুন সাজেশন
দেওয়া হয়। time_detector পরিষেবা নতুন ও আগে থেকে থাকা সাজেশন আবার মূল্যায়ন করে
এবং সাজেশন পেলে ডিভাইসের স্ট্যাটাস আপডেট করে।
যদিও UTC সময় আন্তর্জাতিকভাবে স্বীকৃত, তবুও Android-চালিত ডিভাইসের জন্য বর্তমান Unix epoch সময় নির্ধারণ করা সবসময় সহজ হয় না, এর বিভিন্ন কারণ রয়েছে:
- Unix epoch টাইম হল UTC টাইম থেকে সামান্য আলাদা টাইমকিপিং সিস্টেম। দুটির মধ্যে কনভার্ট করার জন্য লিপ সেকেন্ড কখন ঘটে এবং অরিজিন কীভাবে তা ম্যানেজ করে সেই সম্পর্কে জ্ঞান থাকতে হবে।
- অরিজিন শুধুমাত্র নির্দিষ্ট সময়ে বা নির্দিষ্ট পরিস্থিতিতে উপলভ্য হতে পারে। যেমন, অরিজিনকে নেটওয়ার্ক কানেক্টিভিটি প্রয়োজন হলে, ডিভাইস ইন্টারনেটের সাথে কানেক্ট করা থাকাকালীন শুধুমাত্র তখনই এটি উপলভ্য হতে পারে।
- উৎস সংক্রান্ত তথ্য ভুল বা অস্পষ্ট হতে পারে অথবা তাতে কোনও সমস্যা থাকতে পারে। যেমন, কোনও টেলিফোনি সেল টাওয়ার যদি UTC সময় সঠিকভাবে ট্র্যাক না করে, তাহলে টেলিফোনি উৎস ভুল সময়ের সাজেশন দিতে পারে।
- Unix এপক টাইম পাওয়ার সময় কিছু ভুল হয়ে থাকতে পারে। যেমন, নেটওয়ার্ক বিলম্ব, বাফারিং বা প্রসেস শিডিউলিংয়ের কারণে Unix epoch সময় ভুল হতে পারে।
- সাজেশন পাওয়ার পর থেকে কেটে যাওয়া সময়ের জন্য কোনও সাজেশন অ্যাডজাস্ট করতে যে রেফারেন্স ক্লক ব্যবহার করা হয়, সেটি ভুল হতে পারে।
AOSP-তে ডিফল্ট হিসেবে ব্যবহারের জন্য কনফিগার করা দুটি প্রধান টাইম ডিটেকশন অরিজিন আছে:
- নেটওয়ার্ক: নেটওয়ার্ক টাইম প্রোটোকল (NTP) টাইম সার্ভার ব্যবহার করে।
- টেলিফোনি: নেটওয়ার্ক আইডেন্টিটি ও টাইম জোন (NITZ) টেলিফোনি সিগন্যাল ব্যবহার করে।
টেলিফোনি এবং নেটওয়ার্ক অরিজিন, দুটির ক্ষেত্রেই এক্সটার্নাল নেটওয়ার্কের সাথে কানেক্টিভিটি প্রয়োজন, যা সবসময় উপলভ্য থাকে না।
Android 12 থেকে শুরু করে, Android নিম্নলিখিত অরিজিনকেও সাপোর্ট করে, যেগুলি ডিফল্ট হিসেবে ব্যবহারের জন্য কনফিগার করা হয় না:
- GNSS: GNSS সোর্স থেকে সময় পেতে জিপিএস লোকেশন প্রদানকারী ব্যবহার করে।
- এক্সটার্নাল: জেনেরিক অরিজিন যা ডিভাইস প্রস্তুতকারকদের Unix এপক টাইম সংক্রান্ত নিজস্ব সোর্স ইন্টিগ্রেট করতে দেয়।
সময় সেটিংস
ব্যবহারকারীরা AOSP সেটিংস অ্যাপের সিস্টেম > তারিখ ও সময় বিকল্পে গিয়ে অটোমেটিক সময় শনাক্তকরণ চালু করতে পারবেন।
ছবি ১. সেটিংসে অটোমেটিক সময় শনাক্তকরণ।
নিচের সারণীতে AOSP সেটিংস অ্যাপে সময় শনাক্তকরণের জন্য ব্যবহারকারীর কন্ট্রোল সম্পর্কে বর্ণনা করা হয়েছে।
|
*Android 11 ও তার আগের যেকোনও ভার্সনে, এই সেটিং নেটওয়ার্কের দেওয়া সময় ব্যবহার করুন হিসেবে লেবেল করা আছে |
|||
| AOSP সেটিংস লোকেশন | AOSP সেটিংসের নাম | সুযোগ | আচরণ |
|---|---|---|---|
| সিস্টেম > তারিখ ও সময় | সময় অটোমেটিক সেট করুন* | সব ব্যবহারকারী | একটি টগল। চালু করা থাকলে, ডিভাইস বর্তমান Unix epoch টাইম শনাক্ত করার জন্য দায়ী। বন্ধ থাকলে, ব্যবহারকারীদের ডিভাইসের সময় ম্যানুয়ালি সেট করার জন্য কন্ট্রোল প্রদান করা হয়। |
ব্যবহারকারী ম্যানুয়ালি সময় লিখলে, তিনি নিজের স্থানীয় সময় লেখেন, Unix epoch সময় নয়। বর্তমান Unix epoch টাইম, বর্তমান টাইম জোন ব্যবহার করে গণনা করা হয় যাতে একটি Unix epoch টাইম পাওয়া যায়।
কনফিগারেশন
ডিভাইস প্রস্তুতকারক বিভিন্ন উপায়ে time_detector পরিষেবা কনফিগার করতে পারেন,
যেমন কোন কোন সোর্স ব্যবহার করতে হবে এবং কীভাবে সেগুলির থেকে পাওয়া সিগন্যালকে অগ্রাধিকার দিতে হবে।
উৎস সংক্রান্ত অগ্রাধিকার
Android 12 থেকে, ডিভাইস প্রস্তুতকারকরা
core/res/res/values/config.xml কনফিগারেশন ফাইল পরিবর্তন করতে পারবেন যাতে অটোমেটিক সময় শনাক্তকরণে কোন সময়
অরিজিন অন্তর্ভুক্ত করতে হবে এবং কোন অগ্রাধিকারের ভিত্তিতে
time_detector এই অরিজিনগুলি বিবেচনা করবে তা নির্দিষ্ট করা যায়।
Android 11 বা তার আগের যেকোনও ভার্সনে চলা ডিভাইসের জন্য, অরিজিন প্রায়োরিটি হার্ডকোড করা থাকে
["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>
Android 12-এ, নেটওয়ার্ক ও টেলিফোনি সাজেশন ডিফল্ট হিসেবে ব্যবহার করার জন্য অরিজিন হিসেবে কনফিগার করা হয়। টেলিফোনি সময় সংক্রান্ত সাজেশনের চেয়ে নেটওয়ার্ক সময় সংক্রান্ত সাজেশনকে বেশি অগ্রাধিকার দেওয়া হয়। Android 11 বা তার আগের ভার্সনে যেভাবে কাজ করত, সেই অবস্থায় ফিরিয়ে আনতে ডিভাইস প্রস্তুতকারক অরিজিনের ক্রম পরিবর্তন করতে পারেন। সেখানে টেলিফোনিকে বেশি অগ্রাধিকার দেওয়া হয়।
ডিফল্ট হিসেবে, সবচেয়ে বেশি অগ্রাধিকার পাওয়া বৈধ সাজেশন যদি ডিভাইসের
বর্তমান সিস্টেম ক্লক টাইমের সাথে কয়েক সেকেন্ডের মধ্যে মিলে যায়, তাহলে ডিভাইসের সময় পরিবর্তন করা হবে না
। এটি ইনস্টল করা অ্যাপের জন্য কাজ তৈরি করা এড়াতে করা হয় যা
ACTION_TIME_CHANGED উদ্দেশ্য শোনে।
অনুমোদিত অরিজিন ভ্যালুগুলি হল:
অনুমোদিত সময়সীমা
Android 14,
time_detector পরিষেবার মাধ্যমে পাওয়া সময়ের সাজেশনগুলির জন্য একটি সর্বোচ্চ সময়সীমা চালু করে। ডিভাইসটি ৩২-বিট প্রসেস সমর্থন করলে, ফ্রেমওয়ার্ক
একটি উচ্চ সময়সীমা সেট করে যাতে ডিভাইসটি এমন একটি সময় সাজেশন ব্যবহার করতে না পারে যা
Y2038 সমস্যা ট্রিগার করতে পারে।
Android 12 একটি কম সময়সীমা চালু করেছে যা time_detector পরিষেবার মাধ্যমে প্রাপ্ত সময়
সাজেশন যাচাই করতে ব্যবহৃত হয়। অটোমেটিক সাজেশনের জন্য ব্যবহৃত
সর্বনিম্ন সময়সীমার ভ্যালু বিল্ড টাইমস্ট্যাম্প থেকে সেট করা হয়। এটি এই নীতির উপর ভিত্তি করে কাজ করে যে ডিভাইসের সিস্টেম ইমেজ তৈরি হওয়ার আগের সময়কে সঠিক সময় হিসেবে ধরা যাবে না। সময় সংক্রান্ত সাজেশন যদি নিম্ন সময়সীমার আগে হয়, তাহলে time_detector
পরিষেবা সাজেশনটি বাতিল করে দেয় কারণ বিল্ড টাইমস্ট্যাম্প
সঠিক হলে এটি বৈধ হতে পারে না।
Android 11 বা তার আগের যেকোনও ভার্সনে চলছে এমন ডিভাইসের ক্ষেত্রে, time_detector পরিষেবা ইনকামিং Unix এপক টাইম সাজেশন
ভ্যালিডেট করে না।
ডিবাগিং ও টেস্টিংয়ের সময়
এই বিভাগে, কীভাবে 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 পরিষেবাটি
ডিভাইসের বর্তমান Unix সময় পরিবর্তন করেছে।
সাজেশন ইতিহাসের তথ্য থেকে কোন অরিজিন কী কী সাজেশন দিয়েছে তা বোঝা যায়।
অটোমেটিক টাইম জোন শনাক্তকরণ
এই বিভাগে time_zone_detector পরিষেবার ওভারভিউ দেওয়া হয়েছে যা
অটোমেটিক টাইম জোন শনাক্তকরণ, সেটিংসে ব্যবহারকারীর কন্ট্রোল, টেলিফোনি ও
লোকেশন টাইম জোন শনাক্তকরণ এবং পরীক্ষার বিবরণ ম্যানেজ করে।
time_zone_detector পরিষেবা
Android 11 বা এর পরের যেকোনও ভার্সনে চলছে এমন ডিভাইসে উপলভ্য 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"]- অ্যালগরিদম নিশ্চিত যে জোনটি হল Europe/London.
type =
certain,zoneIds = []`- অ্যালগরিদমটি নিশ্চিত, তবে বর্তমান লোকেশনের সাথে কোনও জোন আইডি যুক্ত নেই।
ধরন =
certain,zoneIds = ["America/Denver", "America/Phoenix"]- অ্যালগরিদম নিশ্চিত যে উত্তরটি দুটি জোনের মধ্যে একটি, কিন্তু America/Denver এবং America/Phoenix-এর মধ্যে থেকে একটি বেছে নিতে পারছে না।
time_zone_detector পরিষেবা তার অ্যালগরিদমের উপর ভিত্তি করে সাজেশনের ক্রমকে আলাদা আলাদা হিসেবে
বিবেচনা করে। অ্যালগরিদমের উপর নির্ভর করে, সাজেশনগুলিতে এমন মেটাডেটাও থাকতে পারে যা
অ্যালগরিদম কতটা নিশ্চিত তা নির্দেশ করে।
time_zone_detector পরিষেবাটি স্টেটফুল, যার অর্থ হল এটি প্রতিটি অ্যালগরিদম দ্বারা করা
সবচেয়ে সাম্প্রতিক পরামর্শের রেকর্ড রাখে। আগের সাজেশন আর সঠিক না হলে, time_zone_detector পরিষেবায় নতুন সাজেশন পাঠানো হয়; অর্থাৎ, অ্যালগরিদমের কাছে এখন অন্য সাজেশন থাকলে অথবা
টাইম জোন শনাক্ত করার ক্ষমতা হারিয়ে ফেললে। time_zone_detector পরিষেবা
নতুন ও আগে থেকে থাকা সাজেশন আবার মূল্যায়ন করে এবং সাজেশন পেলে
ডিভাইসের স্ট্যাটাস আপডেট করে।
Android-এ টাইম জোন শনাক্তকরণের জন্য দুটি অ্যালগরিদম কাজ করে:
- টেলিফোনি
- লোকেশন
time_zone_detector পরিষেবা সাধারণত টাইম জোন নির্ধারণ করতে
একটি অ্যালগরিদম ব্যবহার করে। কোনও ডিভাইসে লোকেশন অ্যালগরিদম কাজ করলে, ডিভাইসটি যে অ্যালগরিদম ব্যবহার করে তা ব্যবহারকারীর কনফিগার করা টাইম জোন সেটিংস-এর উপর ভিত্তি করে নির্ধারিত হয়। ব্যবহার করা অ্যালগরিদম টাইম জোন সম্পর্কে অনিশ্চিত হলে, time_zone_detector সাধারণত অন্য অ্যালগরিদম থেকে সাজেশন ব্যবহার করে না। time_zone_detector-এর মেমরিতে ব্যবহার করা হচ্ছে না এমন অ্যালগরিদমের সাথে যুক্ত সাজেশন হোল্ড করা হতে পারে, কিন্তু অ্যালগরিদম
পরিবর্তন না হলে সেগুলি ব্যবহার করা হয় না। ব্যবহারকারী অটোমেটিক টাইম জোন শনাক্তকরণের সেটিংস পরিবর্তন করলে
এবং অ্যালগরিদম পরিবর্তন করলে, নতুন
অ্যালগরিদমের জন্য উপলভ্য সবচেয়ে সাম্প্রতিক সাজেশন ব্যবহার করা হয়।
টাইম জোন নির্ধারণ করার জন্য একাধিক অ্যালগরিদম ব্যবহার করা হয় এমন পরিস্থিতির ব্যাপারে বিস্তারিত জানতে, টেলিফোনি ফলব্যাক মোড দেখুন।
টেলিফোনি ফলব্যাক মোড
Android 13 ও তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে, time_zone_detector পরিষেবা
টেলিফোনি ফলব্যাক মোড সাপোর্ট করে। এই মোড, Android-কে এমন পরিস্থিতিতে সাময়িকভাবে টেলিফোনি
শনাক্তকরণ সংক্রান্ত সাজেশন ব্যবহার করতে দেয় যেখানে লোকেশন শনাক্তকরণ
টাইম জোন শনাক্ত করতে পারে না অথবা যেখানে টেলিফোনি শনাক্তকরণের তুলনায় লোকেশন শনাক্তকরণ
টাইম জোন শনাক্ত করতে বেশি সময় নেয়।
টেলিফোনি ফলব্যাক মোড সেইসব ডিভাইসের ক্ষেত্রে প্রযোজ্য যেখানে টেলিফোনি ও লোকেশন শনাক্তকরণ, উভয়ই কাজ করে এবং যেখানে ব্যবহারকারী টাইম জোন সেটিংস থেকে টাইম জোন সেট করতে লোকেশন ব্যবহার করুন বিকল্প চালু করেছেন। কোনও ডিভাইস রিবুট করা হলে এবং বিমান মোড বন্ধ করা হলে, এই মোড অটোমেটিক চালু হয়ে যায়।
Android 14 ও তার পরবর্তী যেকোনও ভার্সনে, LTZP স্ট্যাটাস API-এর মাধ্যমে টেলিফোনি ফলব্যাক ট্রিগার করা যেতে পারে, অর্থাৎ, কোনও LTZP যদি জানায় যে এটি অনিশ্চিত এবং এর পরিবেশের কারণে লোকেশন বা টাইম জোন শনাক্ত করার ক্ষমতা কমে গেছে, তাহলে টেলিফোনি ফলব্যাক মোড ট্রিগার করা হয়।
টেলিফোনি ফলব্যাক মোডে থাকাকালীন, time_zone_detector পরিষেবা টেলিফোনি
সাজেশন ব্যবহার করে, যেন লোকেশন শনাক্তকরণ বন্ধ করা আছে যতক্ষণ না লোকেশন অ্যালগরিদম
কোনও নির্দিষ্ট সাজেশন দেয়। নির্দিষ্ট সাজেশন পাওয়ার পরে, টেলিফোনি
ফলব্যাক মোড বন্ধ হয়ে যায় এবং শুধুমাত্র লোকেশন সাজেশন ব্যবহার করা হয়।
টেলিফোনি ফলব্যাক মোডের কনফিগারেশন সংক্রান্ত বিবরণের জন্য, টাইম জোন শনাক্তকরণ কনফিগারেশন দেখুন।
টাইম জোন সেটিংস
ব্যবহারকারীরা AOSP সেটিংস অ্যাপে অটোমেটিক টাইম জোন শনাক্তকরণের সেটিংস চালু ও কনফিগার করতে পারবেন।
ছবি ২. সেটিংসে অটোমেটিক টাইম জোন শনাক্তকরণ।
AOSP সেটিংস অ্যাপে টাইম জোন শনাক্তকরণের জন্য ব্যবহারকারীর কন্ট্রোল সম্পর্কে নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে।
|
*Android 11 ও তার আগের যেকোনও ভার্সনে, এই সেটিং নেটওয়ার্ক-প্রদত্ত টাইম জোন ব্যবহার করুন হিসেবে লেবেল করা থাকে |
|||
| AOSP সেটিংস লোকেশন | AOSP সেটিংসের নাম | সুযোগ | আচরণ |
|---|---|---|---|
| সিস্টেম > তারিখ ও সময় | টাইম জোন অটোমেটিক সেট করুন* | সব ব্যবহারকারী | একটি টগল। চালু করা থাকলে, ডিভাইস বর্তমান টাইম জোন শনাক্ত করার জন্য দায়ী থাকে। বন্ধ করা থাকলে, ব্যবহারকারীদের ডিভাইসের টাইম জোন ম্যানুয়ালি সেট করার জন্য কন্ট্রোল প্রদান করা হয়। |
| সিস্টেম > তারিখ ও সময় | টাইম জোন সেট করতে লোকেশন ব্যবহার করুন | বর্তমান ব্যবহারকারী | একটি টগল। Android 12 থেকে উপলভ্য। ডিভাইসে লোকেশন টাইম জোন শনাক্তকরণ সমর্থিত হলে তবেই এই টগল দেখানো হয়। Android 14-এ করা পরিবর্তনের জন্য, শুধুমাত্র লোকেশন টাইম জোন শনাক্তকরণ কাজ করে এমন ডিভাইস দেখুন। |
| লোকেশন | লোকেশন ব্যবহার করুন | বর্তমান ব্যবহারকারী | একটি টগল। সাধারণত ডিভাইসের লোকেশন ব্যবহার করার অনুমতি দেয় বা আটকায়। ডিভাইসে লোকেশন টাইম জোন শনাক্তকরণ কাজ করলে এই ভ্যালু প্রাসঙ্গিক হয়। |
ব্যবহারকারীর বেছে নেওয়া সেটিংসের ভিত্তিতে টাইম জোন শনাক্তকরণের জন্য ডিভাইসের আচরণ সম্পর্কে নিচে ওভারভিউ দেওয়া হল:
- [তারিখ ও সময়] অটোমেটিক টাইম জোন সেট করুন: বন্ধ
- ব্যবহারকারীকে ম্যানুয়ালি টাইম জোন বেছে নিতে হবে।
- [তারিখ ও সময়] টাইম জোন অটোমেটিক সেট করুন: চালু আছে
- [Location] লোকেশন ব্যবহার করুন: বন্ধ আছে
- টাইম জোন শনাক্ত করতে টেলিফোনি সিগন্যাল ব্যবহার করা হয়।
- [Location] লোকেশন ব্যবহার করুন: চালু আছে
- [তারিখ ও সময়] টাইম জোন সেট করতে লোকেশন ব্যবহার করুন: চালু আছে
- টাইম জোন শনাক্ত করতে লোকেশন ব্যবহার করা হয়।
- [তারিখ ও সময়] টাইম জোন সেট করতে লোকেশন ব্যবহার করুন: বন্ধ আছে
- টাইম জোন শনাক্ত করতে টেলিফোনি সিগন্যাল ব্যবহার করা হয়।
- [তারিখ ও সময়] টাইম জোন সেট করতে লোকেশন ব্যবহার করুন: চালু আছে
- [Location] লোকেশন ব্যবহার করুন: বন্ধ আছে
একাধিক ব্যবহারকারীর ডিভাইস
যেহেতু এর সাথে যুক্ত বেশ কিছু সেটিংস বর্তমান ব্যবহারকারীর জন্য স্কোপ করা আছে, তাই মাল্টি-ইউজার Android-পরিচালিত ডিভাইসে বর্তমান ব্যবহারকারী পরিবর্তন করলে, ডিভাইসের টাইম জোন শনাক্তকরণ সংক্রান্ত আচরণ পরিবর্তন হতে পারে।
টাইম জোন সেট করতে লোকেশন ব্যবহার করুন টগলটি বর্তমান ব্যবহারকারীর জন্য স্কোপ করা আছে এবং ডিভাইস নীতি দ্বারা সীমাবদ্ধ নয়, এর অর্থ হল টাইম জোন অটোমেটিক সেট করুন টগলটি বন্ধ থাকলেও বা ডিভাইস নীতি কন্ট্রোলার দ্বারা অন্যান্য সময় বা টাইম জোন কন্ট্রোল সীমাবদ্ধ থাকলেও ব্যবহারকারীরা সর্বদা এর মান পরিবর্তন করতে পারবেন।
শুধুমাত্র লোকেশন টাইম জোন শনাক্তকরণ অ্যালগরিদম কাজ করে এমন ডিভাইস
এই বিভাগে সেইসব ডিভাইসের আচরণ বর্ণনা করা হয়েছে যেগুলি শুধুমাত্র লোকেশন অ্যালগরিদম সাপোর্ট করে।
Android 14 ও তার পরবর্তী যেকোনও ভার্সন
- AOSP সেটিংস অ্যাপে ব্যবহারকারীদের লোকেশন ব্যবহার করুন বিকল্পটি দেখানো হয় না এবং ডিভাইসটি এমনভাবে আচরণ করে যেন লোকেশন ব্যবহার করুন বিকল্পটি চালু করা আছে।
- ব্যবহারকারী-স্কোপ করা
SettingsProviderসেটিংlocation_time_zone_detection_enabled-এর ভ্যালু উপেক্ষা করা হয়। এই ভ্যালু অন্যান্য ধরনের ডিভাইসে ব্যবহারকারীর পছন্দ রেকর্ড করে।
Android 12 বা Android 13
- AOSP সেটিংস অ্যাপে ব্যবহারকারীরা লোকেশন ব্যবহার করুন বিকল্পটি দেখতে পাবেন এবং তারা এই বিকল্প বন্ধ করে দিতে পারবেন। বিকল্পটি বন্ধ করা থাকলে, ডিভাইস অটোমেটিক টাইম জোন শনাক্ত করবে না।
অটোমেটিক শনাক্তকরণে পরিবর্তন করার সময় এবং সেখান থেকে পরিবর্তন করার সময় আচরণ
ব্যবহারকারী যখন টাইম জোন শনাক্তকরণ ম্যানুয়াল থেকে অটোমেটিক মোডে পরিবর্তন করেন,
time_zone_detector হয়ত আগেই বর্তমান টাইম জোন সম্পর্কে নিশ্চিত হয়ে গেছে। যদি তাই হয়,
ব্যবহারকারী অটোমেটিক শনাক্তকরণ চালু করলে, time_zone_detector পরিষেবার মতামতের সাথে ম্যাচ করাতে
একই সাথে ডিভাইসের টাইম জোন পরিবর্তন করা হতে পারে।
একইভাবে, ব্যবহারকারী সেটিংসে এমন কোনও পরিবর্তন করলে যার ফলে time_zone_detector পরিষেবার বর্তমান অ্যালগরিদমে পরিবর্তন হয়, তাহলে time_zone_detector হয়ত
নতুন অ্যালগরিদমের জন্য আগে থেকেই সাজেশন পেয়ে গেছে এবং তাই time_zone_detector পরিষেবার মতামতের সাথে সাথে সাথে ম্যাচ করার জন্য
ডিভাইসের সময় পরিবর্তন করা হতে
পারে।
টেলিফোনি টাইম জোন শনাক্তকরণ
টেলিফোনি টাইম জোন শনাক্তকরণ, বর্তমান টাইম জোন নির্ধারণ করতে টেলিফোনি সিগন্যাল ব্যবহার করে। আরও তথ্যের জন্য, টেলিফোনি টাইম জোন শনাক্তকরণ দেখুন।
লোকেশনের টাইম জোন শনাক্ত করার বিকল্প
Android 12 বা তার পরবর্তী যেকোনও ভার্সনে লোকেশন টাইম জোন শনাক্তকরণ উপলভ্য। এটি একটি ঐচ্ছিক অটোমেটিক টাইম জোন শনাক্তকরণ ফিচার যা ডিভাইসকে বর্তমান টাইম জোন নির্ধারণ করতে লোকেশন ব্যবহার করার সুবিধা দেয়।
Android 12-এ চালু করা location_time_zone_manager পরিষেবাটি সিস্টেম সার্ভারে
রান করে এবং time_zone_detector পরিষেবায় লোকেশন
অ্যালগরিদম সংক্রান্ত সাজেশন জমা দেওয়ার জন্য দায়ী কোড এতে থাকে। আরও তথ্যের জন্য,
লোকেশন টাইম জোন শনাক্তকরণ দেখুন।
ফিচার গ্রহণ সংক্রান্ত বিবেচনা
এই বিভাগে লোকেশন টাইম জোন শনাক্তকরণ ফিচারের বিভিন্ন দিক বর্ণনা করা হয়েছে যাতে ডিভাইস প্রস্তুতকারক কোনও ডিভাইসে এই ফিচার গ্রহণ করবেন কিনা তা নির্ধারণ করতে পারেন।
টেলিফোনি ও লোকেশন শনাক্তকরণ তুলনা করা
টাইম জোন শনাক্ত করার জন্য টেলিফোনি সিগন্যালের পরিবর্তে লোকেশন ব্যবহার করার সুবিধা ও অসুবিধার তুলনা নিম্নলিখিত সারণীতে দেওয়া হয়েছে।
| বিভাগ | টেলিফোনি শনাক্তকরণ | লোকেশন শনাক্তকরণ |
|---|---|---|
| সঠিকতা | দেশ অনুযায়ী আলাদা আলাদা হয়। MCC, NITZ-এর সঠিকতা ও উপলভ্যতার উপর নির্ভর করে। |
ফিচার কনফিগারেশন বা প্লাগ-ইন কম্পোনেন্টের উপর নির্ভর করে। সঠিকতা সাধারণত এগুলির উপর নির্ভর করে:
|
| আপডেট করা যাবে | টেলিফোনি শনাক্তকরণ আপডেট করা যাবে এমন টাইম জোন ডেটা মডিউলে
(com.android.tzdata APEX) থাকা ফাইলের উপর নির্ভর করে। |
ফিচার কনফিগারেশন বা প্লাগ-ইন কম্পোনেন্টের উপর নির্ভর করে। আপডেট করা যাবে কিনা তা সাধারণত নির্ভর করে ডিভাইসটি সার্ভার নাকি ক্লায়েন্ট টাইম জোন ম্যাপ ডেটা ব্যবহার করে তার উপর। TZDB ও অন্যান্য টাইম জোন সংক্রান্ত তথ্য আপডেট করতে ব্যবহৃত টাইম জোন ডেটা মডিউলে টাইম জোন ম্যাপ ডেটা থাকে না। ডিভাইস প্রস্তুতকারকদের অবশ্যই টাইম জোন নিয়ম ও টাইম জোন ম্যাপ ডেটার মধ্যে ভার্সন কনসিস্টেন্সি বিবেচনা করতে হবে। |
| বিদ্যুৎ ব্যবহার | পাওয়ার ব্যবহার না করা বা কম করা | ব্যবহারকারীর লোকেশন সেটিংস, ব্যবহৃত প্লাগ-ইন এবং সাধারণত অন্যান্য কোন অ্যাপ লোকেশন জানতে চায় তার উপর নির্ভর করে। |
| উপলভ্যতা | শুধুমাত্র টেলিফোনি ডিভাইস। সাধারণত চালু সিম কার্ড প্রয়োজন হয়। | লোকেশন শনাক্তকরণ উপলভ্য লোকেশন প্রদানকারীর উপর নির্ভর করে। |
ব্যবহারকারীর গোপনীয়তা
ব্যবহারকারীর পছন্দের টাইম জোন সাধারণত তার ভৌগোলিক লোকেশন দ্বারা নির্ধারিত হয়। লোকেশন হল সংবেদনশীল ডেটা। টাইম জোন শনাক্তকরণের অংশ হিসেবে ব্যবহারকারীর লোকেশন সংক্রান্ত তথ্য শেয়ার করা নিয়ে তিনি চিন্তিত হতে পারেন। টাইম জোন শনাক্তকরণ সম্পর্কিত নয়, ডিভাইসে রান করা সব অ্যাপ Android অনুমতি না নিয়েই ডিভাইসের বর্তমান টাইম জোন পড়তে পারে এবং অ্যাপ এই তথ্য থেকে ডিভাইসের লোকেশন সম্পর্কে অনিশ্চিত ধারণা পেতে পারে।
আরও নির্দিষ্টভাবে বলতে গেলে, টাইম জোন শনাক্তকরণ প্যাসিভ বা অ্যাক্টিভ উপায়ে কাজ করতে পারে:
- প্যাসিভ: ডিভাইসের পরিবেশের কোনও কিছু ডিভাইসকে সেই পরিবেশে ব্যবহার করার জন্য টাইম জোন বলে দেয়।
- অ্যাক্টিভ: ডিভাইসটিকে নিজের টাইম জোন নির্ধারণ করতে হয় এবং ব্যবহারকারীর গোপনীয়তা সেটিংস ও সম্মতি অনুযায়ী, সেটি করার জন্য ডিভাইসের লোকেশন সংগ্রহ করে। তারপর ডিভাইসটি এক্সটার্নাল পরিষেবার সাথে নিজের লোকেশন শেয়ার করতে পারে।
টেলিফোনি অ্যালগরিদমের মতো প্যাসিভ শনাক্তকরণে ব্যবহারকারীদের জন্য কোনও অতিরিক্ত গোপনীয়তা সংক্রান্ত প্রভাব পড়ে না।
অ্যাক্টিভ শনাক্তকরণ, যেমন লোকেশন অ্যালগরিদমের ক্ষেত্রে, ডিভাইসের লোকেশন নির্ধারণ করা হয়, যা ব্যবহারকারী সম্মতি নাও দিতে পারেন এবং টাইম জোন আইডি নির্ধারণ করার জন্য লোকেশন নেটওয়ার্কের মাধ্যমে পাঠানো হতে পারে।
টাইম জোন শনাক্তকরণের জন্য ব্যবহারকারীর গোপনীয়তা সংক্রান্ত Android-এর দৃষ্টিভঙ্গি ব্যবহারকারীকে অ্যাক্টিভ থাকার কথা এমন অ্যালগরিদম আলাদা আলাদাভাবে বন্ধ করার ক্ষমতা দেয়। এছাড়াও, AOSP প্ল্যাটফর্ম কোড সরাসরি লোকেশন সংক্রান্ত তথ্য নিয়ে কাজ করে না: ডিভাইস প্রস্তুতকারকদের কনফিগার করা প্লাগ-ইন কম্পোনেন্ট লোকেশন শনাক্তকরণ এবং লোকেশনকে টাইম জোন আইডির সাথে ম্যাপ করার কাজ করে।
ব্যবহারকারীর গোপনীয়তা ফিচার সম্পর্কে আরও বিবরণের জন্য, লোকেশন টাইম জোন ডিটেকশন দেখুন।
কনফিগারেশন
ডিভাইস প্রস্তুতকারক time_zone_detector পরিষেবার আচরণ পরিবর্তন করতে
এটি কনফিগার করতে পারেন। এই বিভাগে time_zone_detector পরিষেবার সাধারণ
আচরণ সংক্রান্ত কনফিগারেশন বিকল্পের বিবরণ দেওয়া আছে। টেলিফোনি ও টাইম জোন শনাক্তকরণ অ্যালগরিদম
কনফিগারেশন সংক্রান্ত বিবরণের জন্য, টেলিফোনি টাইম জোন
শনাক্তকরণ ও লোকেশন টাইম জোন শনাক্তকরণ দেখুন।
বেস AOSP কনফিগারেশন
frameworks/base/core/res/res/values/config.xml-এ আছে।
| কনফিগারেশন কী | AOSP ভ্যালু | বর্ণনা |
|---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
যখন true, time_zone_detector টেলিফোনি
ফলব্যাক মোড ব্যবহার করে। এটি Android 13 ও তার পরবর্তী যেকোনও ভার্সনে উপলভ্য।
|
ডিভাইসের ডিফল্ট অ্যাকশন পরিবর্তন করা
AOSP-তে,
auto_time_zone সেটিং true হিসেবে সেট করা থাকলে, অটোমেটিক টাইম জোন শনাক্তকরণ ডিফল্ট হিসেবে চালু করা থাকে। ডিফল্ট হিসেবে অটোমেটিক সময় শনাক্তকরণ বন্ধ করতে, def_auto_time_zone-এ সংজ্ঞায়িত ভ্যালুকে
frameworks/base/packages/SettingsProvider/res/values/defaults.xml 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 পরিষেবা হল Android-এ ব্যবহৃত একটি মেকানিজম যা মালিকানাধীন (নন-AOSP) কোড দ্বারা
সাধারণত রিমোট সার্ভার থেকে নেওয়া ভ্যালু ব্যবহার করে
পরিবর্তনযোগ্য আচরণ কনফিগার করে। device_config পরীক্ষার জন্য ভ্যালু ব্যবহার করার সময়,
বিশেষ করে দীর্ঘক্ষণ ধরে চলা ম্যানুয়াল পরীক্ষার সময়, ডিভাইস ফ্ল্যাগ সিঙ্ক্রোনাইজ করতে পারে, এর ফলে ফ্ল্যাগ রিসেট হয়ে যাবে এবং পরীক্ষার জন্য সেট করা ভ্যালু মুছে যাবে।
Android 12 বা তার পরবর্তী যেকোনও ভার্সনে, সাময়িকভাবে ফ্ল্যাগ সিঙ্ক্রোনাইজেশন বন্ধ করতে, এটি ব্যবহার করুন:
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 লোকেশন অ্যালগরিদম নির্দেশ করে। |
সাজেশন ইতিহাস সংক্রান্ত তথ্য থেকে জানা যায় যে সেটিংস (ম্যানুয়াল) এবং টেলিফোনি ও লোকেশন অ্যালগরিদমের মাধ্যমে কী কী সাজেশন দেওয়া হয়েছে।