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

অবস্থানের সময় অঞ্চল সনাক্তকরণ, Android 12 এবং উচ্চতর সংস্করণে উপলব্ধ, একটি ঐচ্ছিক স্বয়ংক্রিয় সময় অঞ্চল সনাক্তকরণ বৈশিষ্ট্য যা ডিভাইসগুলিকে তাদের অবস্থান এবং সময় অঞ্চল মানচিত্র ডেটা ব্যবহার করে সময় অঞ্চল নির্ধারণ করতে দেয়৷

লোকেশন টাইম জোন ডিটেকশন হল টেলিফোনি টাইম জোন ডিটেকশনের বিকল্প মেকানিজম। যেহেতু এই বৈশিষ্ট্যটির জন্য টেলিফোনির প্রয়োজন নেই, তাই এই বৈশিষ্ট্যটি মোবাইল টেলিফোনি ডিভাইস ছাড়াও বিভিন্ন ফর্ম ফ্যাক্টরের ডিভাইসে সমর্থিত হতে পারে।

অবস্থান সময় অঞ্চল সনাক্তকরণ বৈশিষ্ট্য AOSP প্ল্যাটফর্মে নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:

  • সিস্টেম সার্ভারে সময় অঞ্চল সনাক্তকরণ যুক্তি
  • ব্যবহারকারীদের টেলিফোনি এবং লোকেশন টাইম জোন সনাক্তকরণ পদ্ধতির মধ্যে নির্বাচন করতে সক্ষম করার জন্য সেটিংসে একটি ব্যবহারকারী-অ্যাক্সেসযোগ্য বিকল্প, Android 12-এ চালু করা হয়েছে

  • উপাদানগুলির জন্য একটি প্লাগ-ইন সিস্টেম যা অবস্থান সনাক্তকরণ এবং সময় অঞ্চল ম্যাপিং সম্পাদন করে। প্লাগইনটিকে লোকেশন টাইম জোন প্রোভাইডার (LTZP) বলা হয় এবং একটি ডিভাইসে তাদের মধ্যে দুটি পর্যন্ত থাকতে পারে। প্ল্যাটফর্মটি সিস্টেম API প্রদান করে যা একটি LTZP বাস্তবায়নের জন্য ব্যবহার করা আবশ্যক।

  • একটি রেফারেন্স LTZP বাস্তবায়ন।

  • ওপেন স্ট্রিট ম্যাপ (OSM) ডেটা থেকে একটি রেফারেন্স ডেটাসেট তৈরি করতে হোস্ট টুলিং যা রেফারেন্স বাস্তবায়নের সাথে ব্যবহার করা যেতে পারে।

ব্যবহারকারীর গোপনীয়তা

অবস্থানের সময় অঞ্চল সনাক্তকরণে নিম্নলিখিত ব্যবহারকারীর গোপনীয়তা বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:

  • অবস্থান অ্যালগরিদম নির্বাচন করার জন্য একটি টগল থাকলে, ব্যবহারকারীরা যেকোনো সময় অবস্থান অ্যালগরিদম বন্ধ করতে পারেন।

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

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

  • ডিভাইসের অবস্থানের তথ্য Android প্ল্যাটফর্ম পরিষেবাগুলিতে পাঠানো হয় না। এর পরিবর্তে নিম্নলিখিতগুলি ঘটে:

    • সময় অঞ্চল সনাক্তকারী পরিষেবাগুলি LTZP দ্বারা টাইম জোন আইডি পাঠানো হয়, ডিভাইসের অবস্থান নয়। লোকেশন টাইম জোন সনাক্তকরণ সমর্থন করার জন্য এটি ন্যূনতম API প্রয়োজন।
    • সিস্টেম ইন্টিগ্রেটররা পৃথক LTZP-এর ক্রিয়াকলাপ নিয়ন্ত্রণ করে। LTZP বাস্তবায়নগুলি সম্পূর্ণরূপে অ্যান্ড্রয়েড ডিভাইসে রাখা টাইম জোন ম্যাপ ডেটা ব্যবহার করতে পারে, সার্ভার ব্যবহার করতে পারে বা একটি হাইব্রিড পদ্ধতি ব্যবহার করতে পারে।

বৈশিষ্ট্য আচরণ

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

location_time_zone_manager পরিষেবা time_zone_detector এর অবস্থান অ্যালগরিদমের জন্য পরামর্শ তৈরি করার জন্য দায়ী। location_time_zone_manager পরিষেবাটি সিস্টেম সার্ভার প্রক্রিয়ায় চলে।

location_time_zone_manager পরিষেবাটিতে কোনও সময় অঞ্চল সনাক্তকরণ যুক্তি নেই। এই পরিষেবাটি এক বা দুটি LTZP প্লাগইনগুলির জীবনচক্র পরিচালনার জন্য দায়ী৷

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

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

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

এই পছন্দগুলির ফলস্বরূপ, বর্তমান অ্যালগরিদমকে অবস্থানে স্যুইচ করার পরে বা বর্তমান ব্যবহারকারীকে স্যুইচ করার পরে, সময় অঞ্চল সনাক্ত করার আগে কয়েক সেকেন্ড সময় লাগে৷ এটি ব্যবহার করা LTZP-এর বাস্তবায়নের উপরও নির্ভর করে।

AOSP অবস্থান সময় অঞ্চল সনাক্তকরণ বাস্তবায়ন দুটি LTZP, একটি প্রাথমিক এবং একটি মাধ্যমিক LTZP এখানে সংজ্ঞায়িত করার অনুমতি দেয়:

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

চিত্র 1-এ দেখানো হয়েছে, time_zone_detector পরিষেবা টেলিফোনি বা অবস্থান অ্যালগরিদম থেকে টাইম জোনের পরামর্শ গ্রহণ করে। অবস্থান অ্যালগরিদম প্রাথমিক বা মাধ্যমিক LTZP থেকে পরামর্শ গ্রহণ করে।

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

চিত্র 1. অবস্থান সময় অঞ্চল সনাক্তকরণ তথ্য প্রবাহ।

ডিভাইস কনফিগারেশন প্রয়োজনীয়তা

অবস্থানের সময় অঞ্চল বৈশিষ্ট্য সমর্থন করার জন্য, ডিভাইসগুলিকে LTZPs দিয়ে কনফিগার করতে হবে যা ডিভাইসটি ব্যবহার করতে পারে৷ ডিভাইসগুলির জন্য কমপক্ষে একটি 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 কনফিগারেশন অন্তর্ভুক্ত করে না। যাইহোক, এই ডিফল্ট কনফিগারেশন ব্যবহার করে, ডিভাইস নির্মাতারা পরীক্ষার জন্য কমান্ড লাইন থেকে LTZPs সক্ষম এবং অনুকরণ করতে পারে। (আরো তথ্যের জন্য, ডিবাগ এবং পরীক্ষা দেখুন।)

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 এবং বিভিন্ন লাইসেন্স ফাইল দেখুন।

ডিবাগ এবং পরীক্ষা

নিম্নলিখিত বিভাগটি ডিবাগিং এবং অবস্থানের সময় অঞ্চল সনাক্তকরণ বৈশিষ্ট্য পরীক্ষা করার জন্য শেল কমান্ড বর্ণনা করে।

লোকেশন_টাইম_জোন_ম্যানেজার পরিষেবার সাথে ইন্টারঅ্যাক্ট করুন

যখন লোকেশন অ্যালগরিদম 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