Android 12 ও তার পরবর্তী ভার্সনে উপলভ্য লোকেশন টাইম জোন শনাক্তকরণ হল একটি ঐচ্ছিক অটোমেটিক টাইম জোন শনাক্তকরণ ফিচার যা ডিভাইসকে টাইম জোন নির্ধারণ করতে তার লোকেশন এবং টাইম জোন ম্যাপ ডেটা ব্যবহার করতে দেয়।
টেলিফোনি টাইম জোন শনাক্তকরণের বিকল্প মেকানিজম হল লোকেশন টাইম জোন শনাক্তকরণ। এই ফিচারের জন্য টেলিফোনি প্রয়োজন হয় না, তাই এই ফিচার মোবাইল টেলিফোনি ডিভাইস ছাড়াও বিভিন্ন ফর্ম ফ্যাক্টরের ডিভাইসে কাজ করতে পারে।
AOSP প্ল্যাটফর্মে লোকেশন টাইম জোন শনাক্তকরণ ফিচারে নিম্নলিখিত কম্পোনেন্ট থাকে:
- সিস্টেম সার্ভারে টাইম জোন শনাক্তকরণ লজিক
Android 12-এ চালু করা সেটিংসের মধ্যে ব্যবহারকারীর অ্যাক্সেসযোগ্য বিকল্প, যা ব্যবহারকারীদের টেলিফোনি এবং লোকেশন টাইম জোন ডিটেকশন মেকানিজমের মধ্যে থেকে বেছে নিতে দেয়
লোকেশন শনাক্তকরণ ও টাইম জোন ম্যাপিং পারফর্ম করে এমন কম্পোনেন্টের জন্য একটি প্লাগ-ইন সিস্টেম। প্লাগ-ইনকে লোকেশন টাইম জোন প্রোভাইডার (LTZP) বলা হয় এবং একটি ডিভাইসে সর্বাধিক দুটি প্লাগ-ইন থাকতে পারে। প্ল্যাটফর্মটি সিস্টেম API প্রদান করে যা LTZP প্রয়োগ করতে অবশ্যই ব্যবহার করতে হবে।
একটি রেফারেন্স LTZP প্রয়োগ।
রেফারেন্স ইমপ্লিমেন্টেশনের সাথে ব্যবহার করা যেতে পারে এমন Open Street Map (OSM) ডেটা থেকে রেফারেন্স ডেটাসেট তৈরি করতে হোস্ট টুলের ব্যবহার।
ব্যবহারকারীর গোপনীয়তা
লোকেশন টাইম জোন ডিটেকশনে ব্যবহারকারীর গোপনীয়তা সংক্রান্ত নিম্নলিখিত ফিচার অন্তর্ভুক্ত থাকে:
লোকেশন অ্যালগরিদম বেছে নেওয়ার জন্য টগল থাকলে, ব্যবহারকারী যেকোনও সময় লোকেশন অ্যালগরিদম বন্ধ করে দিতে পারবেন।
ডিভাইসে ব্যবহারকারীদের মধ্যে লোকেশন থেকে পাওয়া টাইম জোন সংক্রান্ত সাজেশন শেয়ার করা হয় না।
ব্যবহারকারীরা তারিখ ও সময় সেটিংস স্ক্রিনের মাধ্যমে টাইম জোন শনাক্তকরণের জন্য লোকেশন শনাক্তকরণ স্পষ্টভাবে কন্ট্রোল করতে পারবেন। ব্যবহারকারীদের অনুমতি সংক্রান্ত ডায়ালগের মাধ্যমে স্পষ্টভাবে অনুমতি দিতে হবে না।
ডিভাইস লোকেশন সংক্রান্ত তথ্য Android প্ল্যাটফর্ম পরিষেবায় পাস করা হয় না। পরিবর্তে নিম্নলিখিত ঘটনা ঘটে:
- LTZP, টাইম জোন ডিটেক্টর পরিষেবাকে টাইম জোন আইডি পাঠায়, ডিভাইসের লোকেশন নয়। লোকেশন টাইম জোন শনাক্তকরণ সাপোর্ট করার জন্য এটি হল ন্যূনতম API।
- সিস্টেম ইন্টিগ্রেটররা আলাদা আলাদা LTZP-র অপারেশন কন্ট্রোল করে। LTZP ইমপ্লিমেন্টেশন, সম্পূর্ণভাবে Android-পরিচালিত ডিভাইসে সেভ করা টাইম জোন ম্যাপ ডেটা, সার্ভার বা হাইব্রিড পদ্ধতি ব্যবহার করতে পারে।
ফিচারের আচরণ
time_zone_detector পরিষেবা নির্ধারণ করে যে কখন ডিভাইসের বর্তমান টাইম জোন পরিবর্তন করতে হবে।
এটি শনাক্তকরণ অ্যালগরিদম থেকে প্রাপ্ত সাজেশন অনুযায়ী করা হয়।
location_time_zone_manager পরিষেবা time_zone_detector-এর লোকেশন অ্যালগরিদমের জন্য সাজেশন
তৈরি করার জন্য দায়ী। এই
location_time_zone_manager পরিষেবা সিস্টেম সার্ভার প্রসেসে চলে।
location_time_zone_manager পরিষেবায় কোনও টাইম জোন শনাক্তকরণ
লজিক নেই। এই পরিষেবা এক বা দুটি LTZP
প্লাগ-ইনের লাইফসাইকেল ম্যানেজ করার জন্য দায়ী।
লোকেশন টাইম জোন শনাক্তকরণের প্রয়োজন না হলে, LTZP চালু করা হয় না। এর অর্থ হল, লোকেশন টাইম জোন শনাক্তকরণ সিস্টেম LTZP-কে ডিভাইসের লোকেশন ট্র্যাক করতে বলে না, যদি না তা বিশেষভাবে প্রয়োজন হয়। এই ধরনের আচরণের কিছু কারণ নিচে উল্লেখ করা হল:
- টেলিফোনি সিগন্যাল যা স্বাভাবিক টেলিফোনি অপারেশনের অংশ হিসেবে প্যাসিভভাবে রিসিভ করা হয়, তার থেকে আলাদা, Android লোকেশন প্রদানকারীর কাছ থেকে লোকেশন অ্যাক্টিভভাবে অনুরোধ করা যেতে পারে এবং অতিরিক্ত পাওয়ার খরচ করতে পারে।
- লোকেশন সেটিংস ব্যবহারকারী-স্কোপ করা হয় এবং Android-কে অবশ্যই বর্তমান ব্যবহারকারীর সেটিংস মেনে চলতে হবে।
- ডিভাইসের লোকেশন পাওয়া গোপনীয়তা সংবেদনশীল।
এছাড়াও, বর্তমান ব্যবহারকারী যখন ব্যবহারকারীদের মধ্যে লোকেশন
তথ্য শেয়ার করা এড়াতে সেটিংস পরিবর্তন করেন, তখন location_time_zone_manager পরিষেবা একটি অনিশ্চিত সাজেশন দেয় (প্রয়োজন হলে
)।
এইসব বিকল্পের ফলস্বরূপ, বর্তমান অ্যালগরিদম লোকেশনে পরিবর্তন করার পরে অথবা বর্তমান ব্যবহারকারী পরিবর্তন করার পরে, টাইম জোন শনাক্ত করতে কয়েক সেকেন্ড সময় লাগে। এছাড়াও, এটি ব্যবহৃত LTZP-এর প্রয়োগের উপর নির্ভর করে।
AOSP লোকেশন টাইম জোন ডিটেকশন ইমপ্লিমেন্টেশন সর্বাধিক দুটি LTZP-কে অনুমতি দেয়, এখানে সংজ্ঞায়িত করা হয়েছে এমন একটি প্রাথমিক এবং একটি সেকেন্ডারি LTZP:
- প্রাইমারি LTZP
- ব্যবহারকারী লোকেশন টাইম জোন শনাক্তকরণ ফিচার চালানোর অনুমতি দিলে এটি সব সময় চলে।
- সেকেন্ডারি LTZP
- প্রাথমিক LTZP রিপোর্ট করলে যে টাইম জোন নিশ্চিত নয়, স্থায়ী ব্যর্থতা রিপোর্ট করলে অথবা ইনিশিয়ালাইজেশনের সময় টাইম-আউট হয়ে গেলে এটি রান করে। প্রাইমারি LTZP নির্দিষ্ট সাজেশন জমা দিলে বন্ধ হয়ে যায়।
ছবি ১-এ দেখানো হয়েছে যে, time_zone_detector পরিষেবা টেলিফোনি বা লোকেশন অ্যালগরিদম থেকে
টাইম জোন সংক্রান্ত সাজেশন পায়। লোকেশন অ্যালগরিদম
প্রাইমারি বা সেকেন্ডারি LTZP থেকে সাজেশন পায়।
ছবি ১. লোকেশন টাইম জোন শনাক্তকরণ সংক্রান্ত তথ্যের ফ্লো।
ডিভাইস কনফিগারেশন সংক্রান্ত প্রয়োজনীয়তা
লোকেশন টাইম জোন ফিচার কাজ করার জন্য, ডিভাইসকে অবশ্যই LTZP-এর সাথে কনফিগার করতে হবে যা ডিভাইস ব্যবহার করতে পারে। লোকেশন টাইম জোন শনাক্তকরণ ফিচার কাজ করার জন্য এবং সেটিংস থেকে ব্যবহারকারীদের দেখানোর জন্য ডিভাইসে অন্তত একটি LTZP চালু ও কনফিগার করা থাকতে হবে।
ডিভাইস কনফিগারেশন
এই বিভাগে বর্ণনা করা হয়েছে যে কীভাবে ডিভাইস প্রস্তুতকারকরা লোকেশন টাইম জোন শনাক্তকরণে সহায়তা করার জন্য ডিভাইস কনফিগার করতে পারেন।
বেস AOSP কনফিগারেশন এখানে আছে
frameworks/base/core/res/res/values/config.xml:
| কনফিগারেশন কী | AOSP ভ্যালু | বর্ণনা |
|---|---|---|
config_enableGeolocationTimeZoneDetection |
true |
লোকেশন টাইম জোন শনাক্তকরণ ফিচারের জন্য এটিই প্রধান কন্ট্রোল।
AOSP-তে ফিচারটি ডিফল্ট হিসেবে কাজ করে। ব্যবহারকারীদের জন্য ফিচার উপলভ্য করতে, অন্তত একটি LTZP চালু বা কনফিগার করা থাকতে হবে। false-এ ভ্যালু সেট করলে, সামান্য মেমরি সেভ করার জন্য ফিচারটি সম্পূর্ণ বন্ধ হয়ে যায়।
|
config_enablePrimaryLocationTimeZoneProvider |
false |
এটি প্রাথমিক LTZP চালু করে। |
config_primaryLocationTimeZoneProviderPackageName |
যে অ্যাপে প্রাথমিক পরিষেবা প্রদানকারী পরিষেবা পাওয়া যাবে, সেটির প্যাকেজ নাম হিসেবে এটি সেট করুন। | |
config_enableSecondaryLocationTimeZoneProvider |
false |
এটি সেকেন্ডারি LTZP চালু করে। |
config_secondaryLocationTimeZoneProviderPackageName |
এটি সেই অ্যাপের প্যাকেজের নাম হিসেবে সেট করুন যেখানে সেকেন্ডারি পরিষেবা প্রদানকারীর পরিষেবা পাওয়া যাবে। |
ডিফল্ট হিসেবে, AOSP কনফিগারেশনে
config_enableGeolocationTimeZoneDetection কী true-এ সেট করা থাকে, যা লোকেশন টাইম জোন শনাক্তকরণ ফিচারের
জন্য সহায়তা চালু করে। AOSP-তে ডিফল্ট হিসেবে LTZP কনফিগারেশন না থাকার কারণে
প্রাথমিকভাবে ব্যবহারকারীরা এই ফিচার দেখতে পান না।
তবে, এই ডিফল্ট কনফিগারেশন ব্যবহার করে, ডিভাইস প্রস্তুতকারক কমান্ড লাইন থেকে LTZP চালু ও
সিমুলেট করতে পারবেন। (আরও তথ্যের জন্য, ডিবাগ ও পরীক্ষা করুন দেখুন)
LTZP স্ট্যাটাস API
Android 14-এ, LTZP API, LTZP রিপোর্টিং স্ট্যাটাস সংক্রান্ত তথ্য প্রদান করে। এর ফলে প্ল্যাটফর্ম নিজে থেকে শনাক্ত করতে পারে না এমন সমস্যা LTZP জানাতে পারে। কারণ, প্ল্যাটফর্মের টাইম জোন শনাক্তকরণ কম্পোনেন্ট সরাসরি লোকেশন অ্যালগরিদমে লোকেশন বা টাইম জোন শনাক্তকরণের সাথে যুক্ত থাকে না।
টেলিফোনি ফলব্যাক মোড কাজ করলে, ডিভাইসের
এনভায়রনমেন্টের কারণে LTZP-এর আচরণ খারাপ হয়েছে বলে রিপোর্ট করার সুবিধা কাজে লাগে। যেমন,
কোনও থার্ড-পার্টি LTZP যদি কাস্টম সেটিংস বা অনুমতির উপর নির্ভর করে
এবং সেটি যদি লোকেশন শনাক্ত করার জন্য কাজ করে, তাহলে সেটি যদি বর্তমান
ডিভাইস সেটিংসের মাধ্যমে ডিগ্রেড করা মোডে চলে বা বন্ধ করা হয়, তাহলে LTZP এই স্ট্যাটাস সংক্রান্ত তথ্য ইন্টার্নাল
প্ল্যাটফর্ম কম্পোনেন্টকে জানাতে পারে, যেমন সেটিংস অ্যাপের মাধ্যমে
reportSuggestion
মেথড। তারপরে, সেটিংস অ্যাপ কাস্টমাইজ করা স্ট্রিং বা
কাস্টমাইজেশনের মাধ্যমে ব্যবহারকারীদের বিজ্ঞপ্তি পাঠাতে পারে যে লোকেশন
অ্যালগরিদম ভালভাবে বা আদৌ কাজ করার জন্য সেটিংস পরিবর্তন করতে হবে।
LTZP যে স্ট্যাটাস রিপোর্ট করতে পারে সেই সম্পর্কে আরও তথ্য পেতে, TimeZoneProviderStatus দেখুন।
LTZP কনফিগারেশন ও ডেপ্লয়মেন্ট
LTZP কনফিগার করার সময়, frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java-এর সোর্স কোডে দেওয়া নির্দেশাবলী পড়ুন।
Javadoc কমেন্ট থেকে পরিষেবা, প্রয়োজনীয় অনুমতি ও অন্যান্য কনফিগারেশন সম্পর্কে
বিস্তারিত তথ্য পাওয়া যায়।
LTZP কনফিগার করতে, ডিভাইস প্রস্তুতকারকদের অবশ্যই LTZP-এর পরিষেবা হোস্ট করার জন্য একটি অ্যাপ প্রসেস বেছে নিতে হবে। LTZP-এর জন্য একটি ডেডিকেটেড প্রসেস থাকা মানে অনেক বেশি ওভারহেড; আদর্শভাবে, বেছে নেওয়া অ্যাপ প্রসেসটি এমন একটি যা সব সময় চলছে, যেমন সিস্টেম সার্ভার।
মডুলার সিস্টেম কম্পোনেন্ট (মডিউল) সহ ডিভাইসে, LTZP-এর ব্যবহার করা জিও ডেটা এবং টাইম জোন ডেটা মডিউলে (com.android.tzdata) থাকা টাইম জোন নিয়ম (tzdb)-এর
মধ্যে ইন্টার্যাকশন বিবেচনা করুন। একটিতে আপডেট করে অন্যটিতে আপডেট না করলে
ভার্সন স্কিউ সংক্রান্ত সমস্যা হওয়ার সম্ভাবনা থাকে। আরও
তথ্যের জন্য, ফিচার গ্রহণ সংক্রান্ত বিবেচনা দেখুন।
AOSP রেফারেন্স LTZP
AOSP-তে
packages/modules/GeoTZ-এর অধীনে LTZP প্রয়োগের রেফারেন্স রয়েছে। এই রেফারেন্স ইমপ্লিমেন্টেশন AOSP API ব্যবহার করে
ডিভাইসের লোকেশন নির্ধারণ করে এবং অন-ডিভাইস ডেটা ফাইল ব্যবহার করে
লোকেশনকে টাইম জোন আইডির সেটের সাথে ম্যাপ করে।
অন্যান্য ওপেন সোর্স প্রোজেক্ট থেকে প্রাপ্ত রেফারেন্স ডেটাসেট সোর্স কোডের সাথে অন্তর্ভুক্ত করা হয়েছে। আরও বিবরণের জন্য, README.md এবং বিভিন্ন LICENSE ফাইল দেখুন।
ডিবাগ ও টেস্ট করা
নিচে উল্লেখ করা বিভাগে, লোকেশন টাইম জোন শনাক্তকরণ ফিচার ডিবাগ ও টেস্ট করার জন্য শেল কমান্ডের বিবরণ দেওয়া আছে।
location_time_zone_manager পরিষেবার সাথে ইন্টার্যাক্ট করা
Android 12 ও এর পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে লোকেশন অ্যালগরিদম কাজ করলে, Android location_time_zone_manager বুট করার সময় পরিষেবা
ইনস্ট্যানশিয়েট করে।
location_time_zone_manager-এর বর্তমান অবস্থা ডাম্প করতে, এগুলি ব্যবহার করুন:
adb shell cmd location_time_zone_manager dumpটেস্টিংয়ে সাহায্য করার জন্য কমান্ড লাইন বিকল্পের একটি বিস্তারিত সেট দেখতে, এগুলি ব্যবহার করুন:
adb shell cmd location_time_zone_manager helpসহায়তা আউটপুটে device_config পরিষেবার প্রপার্টিও বর্ণনা করা হয় যা
টেস্টিং বা প্রোডাকশনে time_zone_detector-এর আচরণ প্রভাবিত করতে ব্যবহার করা
যেতে পারে। আরও তথ্যের জন্য, device_config পরিষেবা ব্যবহার করে
ডিভাইস কনফিগার করুন দেখুন।
LTZP প্রয়োগকারী সংস্থা নিজস্ব ডিবাগিং বা টেস্টিং সহায়তা প্রদান করতে পারে। যেমন, সিস্টেম সার্ভার প্রসেসে রেজিস্টার করা হলে, AOSP রেফারেন্স LTZP ডিবাগ করার জন্য আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService