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

স্বয়ংক্রিয় সময় সনাক্তকরণ বিভিন্ন উত্স থেকে সময় পরামর্শ গ্রহণ করে, সেরা বিকল্পটি নির্বাচন করে এবং তারপরে অ্যান্ড্রয়েডের সিস্টেম ঘড়িটিকে ম্যাচ করার জন্য সেট করে৷ পূর্ববর্তী অ্যান্ড্রয়েড রিলিজগুলি তারিখ এবং সময় সেট করার দুটি উপায় প্রদান করেছে, হয় ব্যবহারকারী প্রতি ম্যানুয়ালি সেট করা বা স্বয়ংক্রিয় সময় সনাক্তকরণ দ্বারা, এবং এই বিকল্পগুলির মধ্যে একটি দ্বারা সেট করা হয়েছে:

  • telephony নেটওয়ার্ক আইডেন্টিটি এবং টাইম জোন (NITZ) টেলিফোনি সংকেত ব্যবহার করে।
  • network নেটওয়ার্ক টাইম প্রোটোকল (এনটিপি) টাইম সার্ভার ব্যবহার করে।

প্রতিটি বিকল্পের জন্য বাহ্যিক নেটওয়ার্কগুলির সাথে সংযোগ প্রয়োজন, যা সবসময় Android Automotive-এ উপলব্ধ থাকে না। উদাহরণস্বরূপ, কিছু দেশে, কিছু গাড়ির অন্তর্নির্মিত টেলিফোনি নাও থাকতে পারে। তাই, নেটওয়ার্ক সংযোগ অনুপলব্ধ হলে গ্লোবাল স্যাটেলাইট নেভিগেশন সিস্টেম (GNSS) সময় আপনার জন্য সিস্টেম সময়ের উৎস হিসাবে প্রদান করা হয়।

এই আসন্ন অ্যান্ড্রয়েড রিলিজটি স্বয়ংক্রিয়ভাবে সনাক্ত করতে এবং সময় সেট করার জন্য আরও দুটি বিকল্প সরবরাহ করে:

  • gnss গ্লোবাল স্যাটেলাইট নেভিগেশন সিস্টেম (GNSS) ব্যবহার করে।
  • external একটি VHAL সম্পত্তি বা সিস্টেম API ব্যবহার করে।

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

স্বয়ংক্রিয় সময় সনাক্তকরণ সক্ষম করতে, সেটিংস > তারিখ ও সময় > স্বয়ংক্রিয় তারিখ ও সময় নির্বাচন করতে ভুলবেন না :

চিত্র 1. স্বয়ংক্রিয় তারিখ এবং সময় নির্বাচন করুন

সময়ের উৎস কনফিগার করুন

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

কম সময় সীমাবদ্ধ

অ্যান্ড্রয়েড 12 সময় পরামর্শ যাচাই করার সময় ব্যবহার করার জন্য একটি নতুন কম সময় প্রদান করে। এই বৈশিষ্ট্যের আগে, স্বয়ংক্রিয় সময় সনাক্তকরণ প্রস্তাবিত ইনকামিং UTC সময়কে বৈধতা দেবে না। এই বৈশিষ্ট্যের সাহায্যে, নিম্ন সীমার আগে অতিবাহিত হওয়া সময়গুলি বাতিল করা হয়।

নিম্ন আবদ্ধ মান বিল্ড টাইমস্ট্যাম্প থেকে প্রাপ্ত একটি তারিখ থেকে নির্ধারিত হয়। এটি এই নীতিতে কাজ করে যে সিস্টেম ইমেজ তৈরির আগে একটি বৈধ সময় ঘটতে পারে না। অ্যান্ড্রয়েড একটি উপরের সীমানা প্রয়োগ করে না।

GNSS সময় পরামর্শ

gnss টাইম সোর্সটি Android 12-এ নতুন এবং GPS সিগন্যাল দ্বারা সরবরাহ করা হয়েছে। এটি সেই সময়ের জন্য একটি নির্ভরযোগ্য উত্স যখন telephony এবং network উপলব্ধ থাকে না৷ এই বিকল্পটি সিস্টেম সার্ভারের নতুন GnssTimeUpdateService এ যোগ করা হয়েছে যা প্যাসিভভাবে অবস্থান আপডেট শোনে। একটি বৈধ অবস্থান প্রাপ্ত হলে, GnssTimeUpdateService TimeDetectorService একটি পরামর্শ দেয়, যা তারপর সিস্টেম ঘড়ি আপডেট করা উচিত কিনা তা নির্ধারণ করে।

ডিফল্টরূপে, gnss টাইম সোর্স 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>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>

এই বৈশিষ্ট্যটি সক্ষম করতে:

  1. config_enableGnssTimeUpdateService আপডেট করুন। config_enableGnssTimeUpdateService এর মান true সেট করা আবশ্যক।
  2. 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>

বাহ্যিক সময়ের পরামর্শ

বাহ্যিক সময়ের পরামর্শগুলি Android-এ স্বয়ংক্রিয় সময় প্রস্তাবনা প্রদান করার আরেকটি উপায়। এই নতুন বিকল্পগুলি আপনাকে অ্যান্ড্রয়েডকে সম্পূর্ণরূপে কাস্টমাইজড সময়ের পরামর্শ প্রদান করতে সক্ষম করে, যা বিভিন্ন ECU থেকে উদ্ভূত হতে পারে যা ঘুরে, একটি রিয়েল-টাইম ঘড়ি, GNSS, NITZ, বা অন্য কোনো সময় উৎসের সংমিশ্রণ ব্যবহার করতে পারে।

external সময়ের পরামর্শ হিসাবে বিবেচনা করার জন্য নিম্নলিখিত পরামর্শগুলি Android 12-এ উপলব্ধ:

  • VHAL বৈশিষ্ট্য। EPOCH_TIME নামে একটি নতুন VHAL সম্পত্তি প্রদান করা হয়েছে৷ এই বৈশিষ্ট্যটি 1/1/1970 UTC থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যা নির্দেশ করে৷ একটি নতুন সিস্টেম সময় প্রস্তাব করার জন্য এটির মান Android TimeManager এ পাঠানো যেতে পারে। একটি নমুনা VHAL বাস্তবায়ন যা এই সম্পত্তি আপডেট করে নীচের রেফারেন্স বাস্তবায়নে প্রদান করা হয়েছে।
  • সিস্টেম API একটি বাহ্যিক সময়ের পরামর্শ প্রদান করার জন্য টাইমম্যানেজারে প্রস্তাবিত suggestExternalTime() নামে একটি নতুন পদ্ধতি উপলব্ধ। যদি সিস্টেমটি বাহ্যিক সময়ের পরামর্শগুলিকে বিবেচনায় নেওয়ার জন্য কনফিগার করা হয় (কনফিগারেশন ফাইলে config_autoTimeSourcesPriority ব্যবহার করে), এই পদ্ধতিতে পাস করা টাইমস্ট্যাম্পটি সিস্টেমের সময় সেট করার জন্য ব্যবহার করা হয়, যদি কোন উচ্চতর অগ্রাধিকার সময় প্রস্তাবনা উপলব্ধ না থাকে।

নীচে বর্ণিত হিসাবে আপনি একটি বাহ্যিক সময় সমাধান বাস্তবায়ন করতে পারেন:

  1. রিসোর্স কনফিগারেশন ফাইলটি আপডেট করুন ( core/res/res/values/config.xml ) এবং তারপর config_autoTimeSourcesPriorityexternal মান যোগ করুন :
    <string-array name="config_autoTimeSourcesPriority>
            <item>external</item>
            <item>gnss</item>
    </string-array>

    এটি করার ফলে অ্যান্ড্রয়েডকে সিস্টেম ঘড়ি সেট করার সময় বাহ্যিক সময়ের পরামর্শগুলিকে সর্বোচ্চ অগ্রাধিকার দেওয়ার নির্দেশ দেয়৷ গাড়ির হার্ডওয়্যার নতুন EPOCH_TIME VHAL সম্পত্তিতে একটি টাইমস্ট্যাম্প সাজেশন লেখে।

  2. একটি বিক্রেতা-প্রদত্ত অ্যাপ এই সম্পত্তিটি পড়ে এবং TimeManager.suggestExternal() কে কল করে। Android তারপর নতুন সিস্টেম ঘড়ি মান হিসাবে প্রদত্ত টাইমস্ট্যাম্প ব্যবহার করতে পারে।