স্বয়ংক্রিয় সময় শনাক্তকরণ বিভিন্ন উৎস থেকে সময়ের পরামর্শ গ্রহণ করে, সেরা বিকল্পটি বেছে নেয় এবং তারপর অ্যান্ড্রয়েডের সিস্টেম ঘড়িকে সেই অনুযায়ী সেট করে। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে তারিখ এবং সময় সেট করার দুটি উপায় ছিল: হয় ব্যবহারকারী কর্তৃক ম্যানুয়ালি সেট করা অথবা স্বয়ংক্রিয় সময় শনাক্তকরণের মাধ্যমে, এবং এই বিকল্পগুলির মধ্যে একটি দ্বারা তা সেট করা হতো।
-
telephonyনেটওয়ার্ক আইডেন্টিটি অ্যান্ড টাইম জোন (NITZ) টেলিফোনি সিগন্যাল ব্যবহার করে। -
networkনেটওয়ার্ক টাইম প্রোটোকল (NTP) টাইম সার্ভার ব্যবহার করে।
প্রতিটি অপশনের জন্য বাহ্যিক নেটওয়ার্কের সাথে সংযোগ প্রয়োজন, যা অ্যান্ড্রয়েড অটোমোটিভে সবসময় উপলব্ধ থাকে না। উদাহরণস্বরূপ, কিছু দেশে কিছু গাড়িতে বিল্ট-ইন টেলিফোনি নাও থাকতে পারে। তাই, নেটওয়ার্ক সংযোগ উপলব্ধ না থাকলে আপনার ব্যবহারের জন্য সিস্টেম টাইমের উৎস হিসেবে গ্লোবাল স্যাটেলাইট নেভিগেশন সিস্টেম (GNSS)-এর সময় প্রদান করা হয়।
অ্যান্ড্রয়েডের এই আসন্ন সংস্করণে স্বয়ংক্রিয়ভাবে সময় শনাক্ত ও সেট করার জন্য আরও দুটি বিকল্প দেওয়া হয়েছে:
-
gnssগ্লোবাল স্যাটেলাইট নেভিগেশন সিস্টেম (GNSS) ব্যবহার করে। -
externalএকটি VHAL প্রপার্টি অথবা সিস্টেম এপিআই ব্যবহার করে।
স্বয়ংক্রিয় সময় সনাক্তকরণ সক্ষম করুন
স্বয়ংক্রিয় সময় শনাক্তকরণ চালু করতে, সেটিংস > তারিখ ও সময় > স্বয়ংক্রিয় তারিখ ও সময় নির্বাচন করুন:

চিত্র ১. স্বয়ংক্রিয় তারিখ ও সময় নির্বাচন করুন
সময় উৎস কনফিগার করুন
স্বয়ংক্রিয় সময় সনাক্তকরণে কোন কোন সময়ের উৎস অন্তর্ভুক্ত করা হবে এবং কোন অগ্রাধিকারের ভিত্তিতে এই উৎসগুলোকে বিবেচনা করা হবে, তা নির্দিষ্ট করার জন্য আপনাকে ডিভাইসটির রিসোর্স কনফিগারেশন ফাইল, core/res/res/values/config.xml , পরিবর্তন করতে হবে।
<!-- 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>telephony</item>
<item>network</item>
</string-array> এই উদাহরণে, স্বয়ংক্রিয় সময় শনাক্তকরণের ক্ষেত্রে telephony এবং network বিবেচনা করা হয় এবং network সময়ের পরামর্শের চেয়ে telephony সময়ের পরামর্শকে অগ্রাধিকার দেওয়া হয়।
সাধারণত, উচ্চ অগ্রাধিকারের উৎস থেকে আসা পরামর্শ উপেক্ষা করা হয় যদি পরামর্শটি অবৈধ হয় বা খুব পুরানো হয়। এছাড়াও, যদি সর্বোচ্চ অগ্রাধিকারের বৈধ পরামর্শটি ডিভাইসের বর্তমান সিস্টেম ঘড়ির সময়ের সাথে কয়েক সেকেন্ডের মধ্যে মিলে যায় (ডিফল্ট মান দুই (2) সেকেন্ড), তাহলে সময় পরিবর্তন করা হবে না।
নিম্ন সময়সীমা
অ্যান্ড্রয়েড ১২ সময় প্রস্তাব যাচাই করার জন্য একটি নতুন নিম্ন সময়সীমা প্রদান করে। এই বৈশিষ্ট্যটির আগে, স্বয়ংক্রিয় সময় শনাক্তকরণ প্রস্তাবিত UTC সময়কে যাচাই করত না। এই বৈশিষ্ট্যটির ফলে, নিম্ন সময়সীমার আগে অতিবাহিত হওয়া সময়গুলো বাতিল হয়ে যায়।
বিল্ড টাইমস্ট্যাম্প থেকে প্রাপ্ত একটি তারিখের ভিত্তিতে নিম্নসীমার মান নির্ধারণ করা হয়। এটি এই নীতির উপর কাজ করে যে, সিস্টেম ইমেজ তৈরি হওয়ার আগে কোনো বৈধ সময় হতে পারে না। অ্যান্ড্রয়েড কোনো উচ্চসীমা আরোপ করে না।
জিএনএসএস সময়ের পরামর্শ
gnss টাইম সোর্স অ্যান্ড্রয়েড ১২-এর একটি নতুন বৈশিষ্ট্য এবং এটি জিপিএস (GPS) সিগন্যালের মাধ্যমে সরবরাহ করা হয়। যখন telephony এবং network উপলব্ধ থাকে না, তখন সময়ের জন্য এটি একটি নির্ভরযোগ্য উৎস। এই অপশনটি সিস্টেমসার্ভার (SystemServer)-এর নতুন GnssTimeUpdateService এ যোগ করা হয়েছে, যা পরোক্ষভাবে লোকেশন আপডেটের জন্য অপেক্ষা করে। যখন একটি বৈধ লোকেশন পাওয়া যায়, তখন GnssTimeUpdateService TimeDetectorService কে একটি পরামর্শ দেয়, যা পরবর্তীতে সিস্টেম ক্লক আপডেট করা উচিত কিনা তা নির্ধারণ করে।
ডিফল্টরূপে, AOSP-তে gnss টাইম সোর্স সক্রিয় থাকে না এবং, তাই এটি পার্টনারদের দ্বারা সক্রিয় করতে হয়:
<!-- 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>telephony</item>
<item>network</item>
<item>gnss</item>
</string-array>
<!-- Enables the GnssTimeUpdate service. This is the global switch for enabling Gnss time based
suggestions to TimeDetector service. See also config_autoTimeSourcesPriority. -->
<bool name="config_enableGnssTimeUpdateService">true</bool>এই বৈশিষ্ট্যটি সক্রিয় করতে:
-
config_enableGnssTimeUpdateServiceআপডেট করুন।config_enableGnssTimeUpdateServiceএর মান অবশ্যইtrueসেট করতে হবে। -
config_autoTimeSourcesPriorityআপডেট করুন।config_autoTimeSourcesPriorityএর আইটেম তালিকায়gnssঅবশ্যই যোগ করতে হবে। অগ্রাধিকার তালিকায়gnssএর অবস্থান, অন্যান্য উৎস থেকে প্রাপ্ত মানের সাপেক্ষে GNSS সাজেশনের অগ্রাধিকার নির্ধারণ করে।
ক্ষমতার উপর প্রভাব
GnssTimeUpdateService নিষ্ক্রিয়ভাবে অবস্থানের আপডেট শোনে, যার অর্থ হলো এটি অতিরিক্ত শক্তি খরচ করার জন্য সক্রিয়ভাবে GPS চালু করে না। ফলে, যখন GNSS উৎসটি সক্রিয় থাকে, তখন এর শক্তি খরচ নগণ্য। এর আরও একটি অর্থ হলো, সিস্টেমের অন্য কোনো অ্যাপ বা পরিষেবা সক্রিয়ভাবে অবস্থানের আপডেটের অনুরোধ না করলে, GnssTimeUpdateService কোনো অবস্থানের আপডেট পায় না এবং কোনো GNSS সময়ও প্রস্তাব করে না।
পরীক্ষা
সামঞ্জস্য পরীক্ষা স্যুট (CTS)
GNSS-প্রদত্ত সময় উপলব্ধ আছে কিনা তা যাচাই করার জন্য একটি CTS পরীক্ষা দেওয়া হয়েছে। বিস্তারিত জানতে LocationShellCommand.java দেখুন।
ইউনিট পরীক্ষা
নিম্নলিখিত ফাইলে মৌলিক ইউনিট টেস্টগুলো দেখুন:
atest frameworks/base/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java
ম্যানুয়াল পরীক্ষা
এই ফিচারটি পরীক্ষা করার জন্য, LocationShellCommand.java তে নতুন কমান্ড যোগ করা হয়েছে। এই কমান্ডগুলো ব্যবহার করে টেস্ট প্রোভাইডার যোগ করুন, যার মাধ্যমে আপনি একটি অবস্থান এবং তার সাথে সম্পর্কিত GNSS সময় নির্দিষ্ট করতে পারবেন। GnssTimeUpdateService এই অবস্থানের আপডেটগুলো শোনে এবং পর্যায়ক্রমে পরামর্শ দেয়।
দ্রষ্টব্য: এই কমান্ডগুলোর ইন্টারফেস রিলিজভেদে পরিবর্তিত হতে পারে।
# Enable Master Location Switch in the foreground user (usually user 10 on automotive). # If you just flashed, this can be done through Setup Wizard. adb shell cmd location set-location-enabled true --user 10 # Add GPS test provider (this usually fails the first time and will throw a SecurityException # with "android from <some-uid> not allowed to perform MOCK_LOCATION".) adb shell cmd location providers add-test-provider gps # Enable mock location permissions for previous UID adb shell appops set <uid printed in previous error> android:mock_location allow # Add GPS test provider (Should work with no errors.) adb shell cmd location providers add-test-provider gps # Enable GPS test provider adb shell cmd location providers set-test-provider-enabled gps true # Set location with time (time can't be earlier than the limit set by the lower bound.) adb shell cmd location providers set-test-provider-location gps --location <LATITUDE>,<LONGITUDE> --time <TIME>
বাহ্যিক সময়ের পরামর্শ
অ্যান্ড্রয়েডে স্বয়ংক্রিয়ভাবে সময় দেখানোর আরেকটি উপায় হলো এক্সটার্নাল টাইম সাজেশন। এই নতুন অপশনটি আপনাকে অ্যান্ড্রয়েডে সম্পূর্ণ কাস্টমাইজড সময় দেখানোর সুযোগ দেয়, যা বিভিন্ন ECU থেকে আসতে পারে এবং সেই ECU-গুলো আবার রিয়েল-টাইম ক্লক, GNSS, NITZ বা অন্য যেকোনো টাইম সোর্সের সমন্বয় ব্যবহার করতে পারে।
অ্যান্ড্রয়েড ১২-এ external সময়ের পরামর্শ হিসেবে নিম্নলিখিত পরামর্শগুলো বিবেচনা করা যেতে পারে:
- VHAL প্রোপার্টিসমূহ।
EPOCH_TIMEনামে একটি নতুন VHAL প্রোপার্টি যোগ করা হয়েছে। এই প্রোপার্টিটি ১/১/১৯৭০ UTC থেকে অতিবাহিত মিলিসেকেন্ডের সংখ্যা নির্দেশ করে। একটি নতুন সিস্টেম টাইম প্রস্তাব করার জন্য এর মান AndroidTimeManagerএ পাঠানো যেতে পারে। এই প্রোপার্টিটি আপডেট করে এমন একটি নমুনা VHAL ইমপ্লিমেন্টেশন রেফারেন্স ইমপ্লিমেন্টেশন পেজে দেওয়া আছে। - সিস্টেম এপিআই। সিস্টেমকে একটি বাহ্যিক সময়ের পরামর্শ দেওয়ার জন্য TimeManager-এ
suggestExternalTime()নামে একটি নতুন মেথড উপলব্ধ হয়েছে। যদি সিস্টেমটি বাহ্যিক সময়ের পরামর্শ বিবেচনা করার জন্য কনফিগার করা থাকে (কনফিগারেশন ফাইলেconfig_autoTimeSourcesPriorityব্যবহার করে), এবং তার চেয়ে উচ্চতর অগ্রাধিকারের কোনো সময়ের পরামর্শ উপলব্ধ না থাকে, তবে এই মেথডে পাঠানো টাইমস্ট্যাম্পটি সিস্টেমের সময় সেট করার জন্য ব্যবহৃত হয়।
আপনি নিচে বর্ণিত পদ্ধতি অনুযায়ী একটি এক্সটার্নাল টাইম সলিউশন প্রয়োগ করতে পারেন:
- রিসোর্স কনফিগারেশন ফাইল (
core/res/res/values/config.xml) আপডেট করুন এবং তারপরconfig_autoTimeSourcesPriority-তেexternalভ্যালুটি যোগ করুন:<string-array name="config_autoTimeSourcesPriority> <item>external</item> <item>gnss</item> </string-array>এর ফলে অ্যান্ড্রয়েডকে সিস্টেম ক্লক সেট করার সময় বাহ্যিক সময়ের পরামর্শকে সর্বোচ্চ অগ্রাধিকার দেওয়ার নির্দেশ দেওয়া হয়। গাড়ির হার্ডওয়্যার নতুন
EPOCH_TIMEVHAL প্রপার্টিতে একটি টাইমস্ট্যাম্প পরামর্শ লিখে রাখে। - ভেন্ডর-প্রদত্ত একটি অ্যাপ এই প্রপার্টিটি পড়ে এবং
TimeManager.suggestExternal()কল করে। এরপর অ্যান্ড্রয়েড প্রদত্ত টাইমস্ট্যাম্পটিকে নতুন সিস্টেম ক্লকের মান হিসেবে ব্যবহার করতে পারে।