সম্প্রচার রেডিও HAL

সম্প্রচার রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) এর সাথে কীভাবে কাজ করতে হয় তা নিম্নলিখিত বিভাগগুলি বর্ণনা করে।

ব্রডকাস্ট রেডিও HAL ইন্টারফেস

ব্রডকাস্ট রেডিও HAL সম্প্রচার রেডিও যেমন AM/FM এবং DAB রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার স্তরে ডেটা স্ট্রাকচার এবং ইন্টারফেস প্রদান করে।

HIDL 2.0 এবং AIDL ইন্টারফেস

সম্প্রচার রেডিও HAL নিম্নলিখিত বিভাগে বর্ণিত ইন্টারফেস ব্যবহার করে।

আইএ ঘোষণা শ্রোতা

IAnnouncementListener হল ঘোষণা শ্রোতার জন্য একটি কলব্যাক ইন্টারফেস, যা ঘোষণা গ্রহণের জন্য সম্প্রচারিত রেডিও HAL-এ নিবন্ধিত হতে পারে। ইন্টারফেসের নিম্নলিখিত পদ্ধতি রয়েছে:

আইএ ঘোষণা শ্রোতা
বর্ণনা: যখনই ঘোষণার তালিকা পরিবর্তিত হয় তখন কল করা হয়।
HIDL 2.0 oneway onListUpdated(vec<Announcement> announcements)
এআইডিএল oneway void onListUpdated(in Announcement[] announcements)

আইক্লোজহ্যান্ডেল

ICloseHandle হল একটি সাধারণ ক্লোজ হ্যান্ডেল যা একটি কলব্যাক অপসারণ করে যার জন্য একটি সক্রিয় ইন্টারফেসের প্রয়োজন নেই৷

আইক্লোজহ্যান্ডেল
বর্ণনা: হ্যান্ডেল বন্ধ করুন।
HIDL 2.0 close()
এআইডিএল void close()

আইটিউনার কলব্যাক

ITunerCallback হল একটি কলব্যাক ইন্টারফেস যা ব্রডকাস্ট রেডিও HAL দ্বারা HAL ক্লায়েন্ট পরিষেবায় আপডেট পাঠানোর জন্য ডাকা হয়।

আইটিউনার কলব্যাক
বর্ণনা: যখন একটি টিউনিং অপারেশন (টিউন, সিক (এআইডিএল) বা স্ক্যান (এইচআইডিএল-এ) এবং পদক্ষেপ সফল হয় তখন অ্যাসিঙ্ক্রোনাসভাবে ব্যর্থ হলে HAL দ্বারা ডাকা হয়।
HIDL 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: টিউন, সিক (এআইডিএল-এ) বা স্ক্যান (এইচআইডিএল-এ) বা পদক্ষেপ সফল হলে বলা হয়।
HIDL 2.0 oneway onTuneFailed(Result result, ProgramSelector selector)
এআইডিএল void onTuneFailed(in Result result, in ProgramSelector selector)
বর্ণনা: টিউন, সিক (এআইডিএল-এ) বা স্ক্যান (এইচআইডিএল-এ) বা পদক্ষেপ সফল হলে বলা হয়।
HIDL 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: প্রোগ্রাম তালিকা আপডেট করা হলে কল করা হয়; প্রতিটি খণ্ডের আকার 500kiB এ সীমাবদ্ধ হওয়া উচিত।
HIDL 2.0 oneway onProgramListUpdated(ProgramListChunk chunk)
এআইডিএল oneway onProgramListUpdated(ProgramListChunk chunk)
বর্ণনা: অ্যান্টেনা সংযুক্ত বা সংযোগ বিচ্ছিন্ন হলে কল করা হয়।
HIDL 2.0 oneway onAntennaStateChange(bool connected)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: যখন বিক্রেতা-নির্দিষ্ট প্যারামিটার মানগুলি HAL-এ অভ্যন্তরীণভাবে আপডেট করা হয় তখন কল করা হয় (HAL ক্লায়েন্ট দ্বারা setParameters কল করার পরে আহ্বান করবেন না)।
HIDL 2.0 oneway onParametersUpdated(vec<VendorKeyValue> parameters)
এআইডিএল void onParametersUpdated(in VendorKeyValue[] parameters)
বর্ণনা: এআইডিএল-এ নতুন। HAL-এ অভ্যন্তরীণভাবে কনফিগারেশন ফ্ল্যাগ আপডেট করা হলে কল করা হয় (HAL ক্লায়েন্ট দ্বারা setConfigFlag কল করার পরে আহ্বান করা উচিত নয়)।
HIDL 2.0 প্রযোজ্য নয়।
এআইডিএল void onConfigFlagUpdated(in ConfigFlag flag, in boolean value)

আইব্রডকাস্ট রেডিও

IBroadcastRadio হল ব্রডকাস্ট রেডিও HAL-এর প্রাথমিক ইন্টারফেস। HIDL 2.0 HAL-এ, অপারেশন কল করতে টিউনারে ITunerSession ইন্টারফেস ব্যবহার করুন। যাইহোক, এক সময়ে সর্বাধিক একটি টিউনার সক্রিয় থাকে (প্রদত্ত প্রতিটি ব্রডকাস্ট রেডিও HAL উদাহরণে শুধুমাত্র একটি টিউনার চিপ থাকে)। ITunerSession AIDL ইন্টারফেস থেকে সরানো হয়েছে এবং এর ইন্টারফেসগুলি IBroadcastRadio এ সরানো হয়েছে।

আইব্রডকাস্ট রেডিও
বর্ণনা: একটি মডিউল এবং এর ক্ষমতার বিবরণ পান।
HIDL 2.0 getProperties() generates (Properties properties)
এআইডিএল Properties getProperties()
বর্ণনা: বর্তমান বা সম্ভাব্য AM/FM অঞ্চল কনফিগারেশন নিয়ে আসে।
HIDL 2.0 getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig config)
এআইডিএল AmFmRegionConfig getAmFmRegionConfig(bool full)
বর্ণনা: বর্তমান DAB অঞ্চল কনফিগারেশন নিয়ে আসে।
HIDL 2.0 getDabRegionConfig() generates (Result result, vec<DabTableEntry> config)
এআইডিএল DabTableEntry[] getDabRegionConfig()
বর্ণনা: রেডিও মডিউল ক্যাশে থেকে একটি চিত্র পায়। AIDL-এ, বাইন্ডার লেনদেন বাফারের একটি হার্ড সীমার কারণে ছবির আকার অবশ্যই 1MB এর কম হতে হবে।
HIDL 2.0 getImage(uint32_t id) generates (vec<uint8_t> image)
এআইডিএল byte[] getImage(in int id)
বর্ণনা: ঘোষণা শ্রোতা নিবন্ধন.
HIDL 2.0 registerAnnouncementListener(vec<AnnouncementType> enabled,IAnnouncementListener listener) generates (Result result, ICloseHandle closeHandle)
এআইডিএল ICloseHandle registerAnnouncementListener(in IAnnouncementListener listener, in AnnouncementType[] enabled)
বর্ণনা:
  • HIDL HAL: যখন একটি নতুন টিউনার সেশন খোলা হয়, তখন পুরানো সেশনটি অবশ্যই বন্ধ করতে হবে।
  • AIDL HAL: যেহেতু কোনো টিউনার সেশন উপলব্ধ নেই, শুধুমাত্র টিউনার কলব্যাক সেট করতে হবে। এটি বিদ্যমান থাকলে, পুরানো কলব্যাকটি আনসেট করা উচিত৷
HIDL 2.0 openSession(ITunerCallback callback) জেনারেট করে (Result result, ITunerSession session)
এআইডিএল void setTunerCallback(in ITunerCallback callback)
বর্ণনা:
  • HIDL HAL: একটি টিউনার সেশন বন্ধ করা অবশ্যই ব্যর্থ হবে না এবং শুধুমাত্র একবার জারি করতে হবে।
  • AIDL HAL: কোন টিউনার নেই এবং শুধুমাত্র টিউনার কলব্যাক আনসেট করতে হবে।
HIDL 2.0 close()
এআইডিএল unsetTunerCallback()
বর্ণনা: একটি নির্দিষ্ট প্রোগ্রাম টিউন.
HIDL 2.0 tune(ProgramSelector program) generates (Result result)
এআইডিএল void tune(in ProgramSelector program)
বর্ণনা: বাতাসে পরবর্তী বৈধ প্রোগ্রাম চায়। এআইডিএল-এ বিভ্রান্তি এড়াতে, scan নাম পরিবর্তন করে seek হয়েছে।
HIDL 2.0 scan(bool directionUp, bool skipSubChannel) generates (Result result)
এআইডিএল void seek(in boolean directionUp, in boolean skipSubChannel)
বর্ণনা: পার্শ্ববর্তী চ্যানেলের ধাপ, যা কোনো প্রোগ্রাম দ্বারা দখল করা যাবে না।
HIDL 2.0 step(bool directionUp) generates (Result result)
এআইডিএল void step(in boolean directionUp)
বর্ণনা: মুলতুবি থাকা টিউন, স্ক্যান (এইচআইডিএল-এ) বা সন্ধান (এআইডিএল-এ) বা ধাপ অপারেশন বাতিল করে।
HIDL 2.0 cancel()
এআইডিএল void cancel()
বর্ণনা: প্রোগ্রাম তালিকায় একটি ফিল্টার প্রয়োগ করে এবং onProgramListUpdated কলব্যাকের মাধ্যমে প্রোগ্রাম তালিকা আপডেট পাঠানো শুরু করে।
HIDL 2.0 startProgramListUpdates(ProgramFilter filter) generates (Result result)
এআইডিএল void startProgramListUpdates(in ProgramFilter filter)
বর্ণনা: প্রোগ্রাম তালিকা আপডেট পাঠানো বন্ধ করে.
HIDL 2.0 stopProgramListUpdates()
এআইডিএল void stopProgramListUpdates()
বর্ণনা: একটি প্রদত্ত কনফিগারেশন পতাকার বর্তমান সেটিং নিয়ে আসে।
HIDL 2.0 isConfigFlagSet(ConfigFlag flag) generates (Result result, bool value)
এআইডিএল boolean isConfigFlagSet(in ConfigFlag flag)
বর্ণনা: প্রদত্ত কনফিগারেশন পতাকা সেট করে।
HIDL 2.0 setConfigFlag(ConfigFlag flag, bool value) generates (Result result)
এআইডিএল void setConfigFlag(in ConfigFlag flag, boolean value)
বর্ণনা: বিক্রেতা-নির্দিষ্ট প্যারামিটার মান সেট করে।
HIDL 2.0 setParameters(vec<VendorKeyValue> parameters)

উৎপন্ন করে ,

(vec<VendorKeyValue> results)
এআইডিএল VendorKeyValue[] setParameters(in VendorKeyValue[] parameters)
বর্ণনা: বিক্রেতা-নির্দিষ্ট পরামিতি মান পুনরুদ্ধার করে।
HIDL 2.0 getParameters(vec<string> keys) generates (vec<VendorKeyValue> parameters)
এআইডিএল VendorKeyValue[] getParameters(in String[] keys)

ইন্টারফেস স্পষ্টীকরণ

অ্যাসিঙ্ক্রোনাস আচরণ

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

  • সমস্ত মুলতুবি টিউনিং অপারেশন বাতিল করুন।
  • পদ্ধতি ইনপুট এবং টিউনার অবস্থার উপর ভিত্তি করে অপারেশন প্রক্রিয়া করা যেতে পারে কিনা তা পরীক্ষা করুন।
  • টিউনিং টাস্ক শিডিউল করুন এবং তারপর Result (এইচআইডিএল-এ) বা status (এআইডিএল-এ) অবিলম্বে ফেরত দিন। Result বা status OK থাকলে, টিউনিং টাস্ক ব্যর্থ হলে (উদাহরণস্বরূপ, টাইমআউটের কারণে) বা সম্পূর্ণ হলে টিউনার কলব্যাক tuneFailed বা currentProgramInfoChanged কল করতে হবে।

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

রেসের অবস্থা

টিউনিং অপারেশনগুলির অসিঙ্ক্রোনাস আচরণের কারণে (উদাহরণস্বরূপ, টিউন, স্ক্যান (এইচআইডিএল-এ) বা সন্ধান (এআইডিএল-এ) এবং ধাপে, অপারেশন বাতিল করা এবং টিউনিং অপারেশনগুলির মধ্যে একটি রেস শর্ত বিদ্যমান। এইচএএল একটি টিউনিং অপারেশন সম্পূর্ণ করার পরে এবং কলব্যাক সম্পূর্ণ হওয়ার আগে যদি cancel কল করা হয়, তবে বাতিলটি উপেক্ষা করা যেতে পারে এবং কলব্যাকটি সম্পূর্ণ হওয়া উচিত এবং এইচএএল ক্লায়েন্ট দ্বারা গ্রহণ করা উচিত।

একইভাবে, HAL একটি প্রোগ্রাম তালিকা আপডেট সম্পূর্ণ করার পরে এবং onCurrentProgramInfoChanged কলব্যাক সম্পূর্ণ হওয়ার আগে যদি stopProgramListUpdates কল করা হয়, তাহলে stopProgramListUpdates উপেক্ষা করা যেতে পারে এবং কলব্যাক সম্পূর্ণ হওয়া উচিত।

ডেটা আকারের সীমা

যেহেতু বাইন্ডার লেনদেনের বাফারে একটি কঠিন সীমা রয়েছে, তাই সম্ভাব্য বড় আকারের ডেটা পাস করার কিছু ইন্টারফেস পদ্ধতির ডেটা সীমা AIDL HAL-এ স্পষ্ট করা হয়েছে।

  • getImage জন্য 1 MB-এর কম ছবি ফেরত দিতে হবে।
  • onProgramListUpdate জন্য প্রতিটি chunk 500kiB-এর কম হতে হবে। HAL বাস্তবায়নের মাধ্যমে বৃহত্তর প্রোগ্রাম তালিকাকে একাধিক খণ্ডে বিভক্ত করতে হবে এবং একাধিক কলব্যাকের মাধ্যমে পাঠানো হবে।

AIDL HAL ডেটা স্ট্রাকচারে পরিবর্তন

ইন্টারফেসের পরিবর্তন ছাড়াও, এই পরিবর্তনগুলি ব্রডকাস্ট রেডিও AIDL HAL-তে সংজ্ঞায়িত ডেটা স্ট্রাকচারে প্রয়োগ করা হয়েছে, যা AIDL-এর সুবিধা নেয়।

  • AIDL-এ Constant enum সরানো হয় এবং IBroadcastRadio তে const int হিসাবে সংজ্ঞায়িত করা হয়। ইতিমধ্যে, ANTENNA_DISCONNECTED_TIMEOUT_MS নাম পরিবর্তন করে ANTENNA_STATE_CHANGE_TIMEOUT_MS করা হয়েছে। TUNER_TIMEOUT_MS int একটি নতুন const যোগ করা হয়েছে৷ এই সময়ের মধ্যে সমস্ত সুর, সন্ধান এবং পদক্ষেপের ক্রিয়াকলাপ সম্পূর্ণ করতে হবে।
  • Enum RDS এবং Deemphasis AIDL-এ সরানো হয়েছে এবং AmFmRegionConfig এ const int হিসাবে সংজ্ঞায়িত করা হয়েছে। তদনুসারে, ProgramInfo তে fmDeemphasis এবং fmRds উভয়কেই int হিসাবে ঘোষণা করা হয়েছে, সংশ্লিষ্ট ফ্ল্যাগের একটি বিট গণনা ফলাফল। ইতিমধ্যে, D50 এবং D75 নাম পরিবর্তন করে যথাক্রমে DEEMPHASIS_D50 এবং DEEMPHASIS_D75 রাখা হয়েছে।
  • Enum ProgramInfoFlags AIDL-এ সরানো হয় এবং ProgramInfoFLAG_ উপসর্গ যুক্ত করে const int হিসাবে সংজ্ঞায়িত করা হয়। তদনুসারে, ProgramInfoinfoFlags int হিসাবে ঘোষণা করা হয়, পতাকাগুলির একটি বিট গণনা ফলাফল। TUNED এর নাম পরিবর্তন করে FLAG_TUNABLE করা হয়েছে, যাতে স্টেশনটি টিউন করা যেতে পারে তার সংজ্ঞাটি আরও ভালভাবে বর্ণনা করতে।
  • AmFmBandRange এ, scanSpacing এর নাম পরিবর্তন করে seekSpacing করা হয়েছে, যেহেতু scan নাম পরিবর্তন করে এআইডিএল-এ seek
  • যেহেতু AIDL-এ ইউনিয়নের ধারণাটি চালু করা হয়েছে, তাই HIDL HAL-এ সংজ্ঞায়িত MetadataKey এবং Metadata আর ব্যবহার করা হয় না। একটি এআইডিএল ইউনিয়ন Metadata এআইডিএল এইচএএল-এ সংজ্ঞায়িত করা হয়েছে। পূর্বে MetadataKey এ থাকা প্রতিটি enum মান এখন Metadata একটি ক্ষেত্র যার সংজ্ঞার উপর নির্ভর করে স্ট্রিং বা int-এর ধরন রয়েছে।

DAB রেডিও সমর্থন

এই বিভাগে DAB রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

AIDL ব্রডকাস্ট রেডিও HAL-এ DAB এবং DMB রেডিওর প্রাথমিক শনাক্তকারীর ধরন হল DAB_SID_EXTDAB_SID_EXT একটি 32-বিট পরিষেবা সনাক্তকারী (SIDs) ব্যবহার করে যাতে এটি DAB এবং DMB রেডিও উভয়ের SID উপস্থাপন করতে পারে।

প্রাথমিক শনাক্তকারী ছাড়াও, DAB_ENSEMBLE এবং DAB_FREQUENCY_KHZ মত মাধ্যমিক শনাক্তকারী সমর্থিত। এটি গুরুত্বপূর্ণ কারণ একাধিক DAB স্টেশন বিভিন্ন DAB_ENSEMBLE বা DAB_FREQUENCY_KHZ মান থাকাকালীন একটি DAB_SID_EXT ভাগ করতে পারে৷ সঠিক প্রোগ্রাম তালিকা আপডেট নিশ্চিত করতে, একই DAB_SID_EXT সহ স্টেশনগুলি ITunerCallback#onProgramListUpdated ব্যবহার করে একসাথে আপডেট করা হয়। এই আপডেটটি তারপর ব্রডকাস্ট রেডিও সার্ভিস এবং রেডিও ম্যানেজার এবং অবশেষে android.hardware.radio.ProgramList এর মাধ্যমে রেডিও অ্যাপে রিলে করা হয়।

মেটাডেটা

নিম্নলিখিত সারণীটি AIDL ব্রডকাস্ট রেডিও HAL-এ DAB-এর জন্য সমর্থিত মেটাডেটা নির্দিষ্ট দেখায়:

মেটাডেটা ক্ষেত্র বর্ণনা
dabEnsembleName (সংক্ষিপ্ত রূপ: dabEnsembleNameShort ) DAB স্টেশনের সমাহার নাম
dabServiceName ( dabServiceNameShort থেকে সংক্ষেপিত) DAB স্টেশনের পরিষেবার নাম
dabComponentName ( dabComponentNameShort থেকে সংক্ষেপিত) DAB স্টেশনের উপাদানের নাম

এইচডি রেডিও রূপান্তর

এই বিভাগে HD রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

HD_STATION_ID_EXT HD রেডিও স্টেশনগুলির প্রাথমিক শনাক্তকারী হিসাবে কাজ করে৷ স্টেশন শনাক্তকরণ আরও উন্নত করতে, HD_STATION_NAME এবং HD_STATION_LOCATION এর মতো মাধ্যমিক শনাক্তকারীগুলিও প্রদান করা হয়েছে৷ HD_STATION_LOCATION , যা অবস্থানের তথ্য প্রদান করে, Android 15-এ চালু করা হয়েছিল।

ডিজিটাল রেডিও সক্ষম বা অক্ষম করুন

Android 15 দিয়ে শুরু করে, আপনি ConfigFlag s সামঞ্জস্য করে ডিজিটাল রেডিও (যেমন HD রেডিও) সক্ষম বা অক্ষম করতে পারেন। FM রেডিওর জন্য এই সেটিং নিয়ন্ত্রণ করতে, FORCE_ANALOG_FM পতাকা ব্যবহার করুন; AM রেডিওর জন্য, FORCE_ANALOG_AM পতাকা ব্যবহার করুন। পতাকাটিকে false সেট করা HD রেডিও সক্ষম করে, যখন এটিকে true শক্তির এনালগ AM/FM রেডিওতে সেট করে।

HD চ্যানেল উপলব্ধ

Android 15 দিয়ে শুরু করে, বর্তমানে একটি HD রেডিও স্টেশনের জন্য উপলব্ধ HD চ্যানেলগুলিকে ProgramInfo.metadata এ 8 বিটের একটি বিট মাস্ক, Metadata#hdSubChannelsAvailable দ্বারা উপস্থাপন করা যেতে পারে। উদাহরণস্বরূপ, বাম থেকে বিট 1 এর মান এই HD স্টেশনের জন্য HD2 সাবচ্যানেল উপলব্ধ কিনা তা প্রতিনিধিত্ব করে।

সংকেত অধিগ্রহণ অবস্থা

অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণে, রেডিও অ্যাপগুলি ব্যবহারকারীদের HD রেডিও স্টেশনগুলির সংকেত অধিগ্রহণের অবস্থা দেখাতে পারে। এটি সহায়ক কারণ একটি শক্তিশালী HD সংকেত অর্জন করতে কখনও কখনও কয়েক মুহূর্ত সময় লাগতে পারে।

এই তথ্য প্রদান করতে, সিস্টেমটি স্ট্যাটাস ট্র্যাক করতে ProgramInfo.infoFlags ব্যবহার করে এবং ITunerCallback#onCurrentProgramInfoChanged.

ProgramInfo.infoFlags মধ্যে স্ট্যাটাস কীভাবে উপস্থাপন করা হয় তা এখানে:

  • বিট 6: HD রেডিও সংকেত অর্জিত হয়েছে কিনা তা নির্দেশ করে।
  • বিট 7: স্টেশন ইনফরমেশন সার্ভিস (SIS) ডেটা উপলব্ধ কিনা তা দেখায়। SIS স্টেশন এবং কী চলছে সে সম্পর্কে অতিরিক্ত তথ্য প্রদান করে।
  • বিট 8: HD ডিজিটাল অডিও উপলব্ধ কিনা তা বলে।

মেটাডেটা

নিম্নলিখিত সারণীটি Android 15 এবং উচ্চতর সংস্করণগুলির জন্য সমর্থিত HD রেডিও মেটাডেটা দেখায়৷

মেটাডেটা ক্ষেত্র বর্ণনা
commentShortDescription মন্তব্যের সংক্ষিপ্ত প্রসঙ্গ বর্ণনা
commentActualText মন্তব্যের পাঠ্য
commercial রেডিও বাণিজ্যিক
ufids বিষয়বস্তুর সাথে যুক্ত ইউনিক ফাইল আইডেন্টিফায়ার (UFIDs)
hdStationNameShort HD রেডিও স্টেশনের সংক্ষিপ্ত নাম বা সর্বজনীন সংক্ষিপ্ত নাম
hdStationNameLong HD রেডিও স্টেশনের দীর্ঘ নাম, স্লোগান বা স্টেশন থেকে একটি বার্তা।

জরুরী সতর্কতা

অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণে, জরুরি সতর্কতাগুলি HD রেডিও স্টেশনগুলির জন্য সমর্থিত হয় যাতে রেডিও অ্যাপ ব্যবহারকারীদের রেডিও স্টেশনগুলি থেকে পাঠানো জরুরি সতর্কতাগুলি জানানো হয়৷ জরুরী সতর্কতা ( Alert ) সাধারণ সতর্কতা প্রোটোকল (CAP) 1.2 স্ট্যান্ডার্ড অনুসরণ করে এবং নিম্নলিখিত সারণীতে দেখানো সতর্কতাগুলিকে সমর্থন করে:

সতর্কতা তথ্য বর্ণনা Enum মান উপলব্ধ
AlertStatus সতর্কতা বার্তার অবস্থা ACTUAL , EXERCISE , TEST
AlertMessageType জরুরী সতর্কতা বার্তার ধরন ALERT , UPDATE , CANCEL
AlertCategory জরুরি সতর্কতা বার্তার বিষয় ইভেন্টের বিভাগ GEO , MET , SAFETY , SECURITY , RESCUE , FIRE , HEALTH , ENV , TRANSPORT , INFRA , CBRNE , OTHER
AlertUrgency জরুরী সতর্কতা বার্তার বিষয় ঘটনা জরুরী IMMEDIATE , EXPECTED , FUTURE , PAST , UNKNOWN
AlertSeverity জরুরি সতর্কতা বার্তার বিষয় ঘটনার তীব্রতা EXTREME , SEVERE , MODERATE , MINOR , UNKNOWN
AlertCertainty জরুরি সতর্কতা বার্তার বিষয় ইভেন্টের নিশ্চিততা OBSERVED , LIKELY , POSSIBLE , UNLIKELY , UNKNOWN
আপনি বর্তমান সতর্কতা সম্পর্কে তথ্য দেখানোর জন্য Alert (যা টেবিলে তথ্য রয়েছে), সতর্কতা পাঠ্য বার্তা এবং AlertArea ব্যবহার করতে পারেন। Alert হল ProgramInfo তে একটি ঐচ্ছিক ক্ষেত্র যাতে এটি বর্তমান প্রোগ্রাম তথ্য এবং প্রোগ্রাম তালিকা আপডেটের জন্য টিউনার কলব্যাকের মাধ্যমে ব্রডকাস্ট রেডিও HAL থেকে রেডিও অ্যাপে পাঠানো যেতে পারে।

,

সম্প্রচার রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) এর সাথে কীভাবে কাজ করতে হয় তা নিম্নলিখিত বিভাগগুলি বর্ণনা করে।

ব্রডকাস্ট রেডিও HAL ইন্টারফেস

ব্রডকাস্ট রেডিও HAL সম্প্রচার রেডিও যেমন AM/FM এবং DAB রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার স্তরে ডেটা স্ট্রাকচার এবং ইন্টারফেস প্রদান করে।

HIDL 2.0 এবং AIDL ইন্টারফেস

সম্প্রচার রেডিও HAL নিম্নলিখিত বিভাগে বর্ণিত ইন্টারফেস ব্যবহার করে।

আইএ ঘোষণা শ্রোতা

IAnnouncementListener হল ঘোষণা শ্রোতার জন্য একটি কলব্যাক ইন্টারফেস, যা ঘোষণা গ্রহণের জন্য সম্প্রচারিত রেডিও HAL-এ নিবন্ধিত হতে পারে। ইন্টারফেসের নিম্নলিখিত পদ্ধতি রয়েছে:

আইএ ঘোষণা শ্রোতা
বর্ণনা: যখনই ঘোষণার তালিকা পরিবর্তিত হয় তখন কল করা হয়।
HIDL 2.0 oneway onListUpdated(vec<Announcement> announcements)
এআইডিএল oneway void onListUpdated(in Announcement[] announcements)

আইক্লোজহ্যান্ডেল

ICloseHandle হল একটি সাধারণ ক্লোজ হ্যান্ডেল যা একটি কলব্যাক অপসারণ করে যার জন্য একটি সক্রিয় ইন্টারফেসের প্রয়োজন নেই৷

আইক্লোজহ্যান্ডেল
বর্ণনা: হ্যান্ডেল বন্ধ করুন।
HIDL 2.0 close()
এআইডিএল void close()

আইটিউনার কলব্যাক

ITunerCallback হল একটি কলব্যাক ইন্টারফেস যা ব্রডকাস্ট রেডিও HAL দ্বারা HAL ক্লায়েন্ট পরিষেবায় আপডেট পাঠানোর জন্য ডাকা হয়।

আইটিউনার কলব্যাক
বর্ণনা: যখন একটি টিউনিং অপারেশন (টিউন, সিক (এআইডিএল) বা স্ক্যান (এইচআইডিএল-এ) এবং পদক্ষেপ সফল হয় তখন অ্যাসিঙ্ক্রোনাসভাবে ব্যর্থ হলে HAL দ্বারা ডাকা হয়।
HIDL 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: টিউন, সিক (এআইডিএল-এ) বা স্ক্যান (এইচআইডিএল-এ) বা পদক্ষেপ সফল হলে বলা হয়।
HIDL 2.0 oneway onTuneFailed(Result result, ProgramSelector selector)
এআইডিএল void onTuneFailed(in Result result, in ProgramSelector selector)
বর্ণনা: টিউন, সিক (এআইডিএল-এ) বা স্ক্যান (এইচআইডিএল-এ) বা পদক্ষেপ সফল হলে বলা হয়।
HIDL 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: প্রোগ্রাম তালিকা আপডেট করা হলে কল করা হয়; প্রতিটি খণ্ডের আকার 500kiB এ সীমাবদ্ধ হওয়া উচিত।
HIDL 2.0 oneway onProgramListUpdated(ProgramListChunk chunk)
এআইডিএল oneway onProgramListUpdated(ProgramListChunk chunk)
বর্ণনা: অ্যান্টেনা সংযুক্ত বা সংযোগ বিচ্ছিন্ন হলে কল করা হয়।
HIDL 2.0 oneway onAntennaStateChange(bool connected)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: যখন বিক্রেতা-নির্দিষ্ট প্যারামিটার মানগুলি HAL-এ অভ্যন্তরীণভাবে আপডেট করা হয় তখন কল করা হয় (HAL ক্লায়েন্ট দ্বারা setParameters কল করার পরে আহ্বান করবেন না)।
HIDL 2.0 oneway onParametersUpdated(vec<VendorKeyValue> parameters)
এআইডিএল void onParametersUpdated(in VendorKeyValue[] parameters)
বর্ণনা: এআইডিএল-এ নতুন। HAL-এ অভ্যন্তরীণভাবে কনফিগারেশন ফ্ল্যাগ আপডেট করা হলে কল করা হয় (HAL ক্লায়েন্ট দ্বারা setConfigFlag কল করার পরে আহ্বান করা উচিত নয়)।
HIDL 2.0 প্রযোজ্য নয়।
এআইডিএল void onConfigFlagUpdated(in ConfigFlag flag, in boolean value)

আইব্রডকাস্ট রেডিও

IBroadcastRadio হল ব্রডকাস্ট রেডিও HAL-এর প্রাথমিক ইন্টারফেস। HIDL 2.0 HAL-এ, টিউনারকে কল অপারেশন করতে ITunerSession ইন্টারফেস ব্যবহার করুন। যাইহোক, এক সময়ে সর্বাধিক একটি টিউনার সক্রিয় থাকে (প্রদত্ত প্রতিটি ব্রডকাস্ট রেডিও HAL উদাহরণে শুধুমাত্র একটি টিউনার চিপ থাকে)। ITunerSession AIDL ইন্টারফেস থেকে সরানো হয়েছে এবং এর ইন্টারফেসগুলি IBroadcastRadio এ সরানো হয়েছে।

আইব্রডকাস্ট রেডিও
বর্ণনা: একটি মডিউল এবং এর ক্ষমতার বিবরণ পান।
HIDL 2.0 getProperties() generates (Properties properties)
এআইডিএল Properties getProperties()
বর্ণনা: বর্তমান বা সম্ভাব্য AM/FM অঞ্চল কনফিগারেশন নিয়ে আসে।
HIDL 2.0 getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig config)
এআইডিএল AmFmRegionConfig getAmFmRegionConfig(bool full)
বর্ণনা: বর্তমান DAB অঞ্চল কনফিগারেশন নিয়ে আসে।
HIDL 2.0 getDabRegionConfig() generates (Result result, vec<DabTableEntry> config)
এআইডিএল DabTableEntry[] getDabRegionConfig()
বর্ণনা: রেডিও মডিউল ক্যাশে থেকে একটি চিত্র পায়। AIDL-এ, বাইন্ডার লেনদেন বাফারের একটি হার্ড সীমার কারণে ছবির আকার অবশ্যই 1MB এর কম হতে হবে।
HIDL 2.0 getImage(uint32_t id) generates (vec<uint8_t> image)
এআইডিএল byte[] getImage(in int id)
বর্ণনা: ঘোষণা শ্রোতা নিবন্ধন.
HIDL 2.0 registerAnnouncementListener(vec<AnnouncementType> enabled,IAnnouncementListener listener) generates (Result result, ICloseHandle closeHandle)
এআইডিএল ICloseHandle registerAnnouncementListener(in IAnnouncementListener listener, in AnnouncementType[] enabled)
বর্ণনা:
  • HIDL HAL: যখন একটি নতুন টিউনার সেশন খোলা হয়, তখন পুরানো সেশনটি অবশ্যই বন্ধ করতে হবে।
  • AIDL HAL: যেহেতু কোনো টিউনার সেশন উপলব্ধ নেই, শুধুমাত্র টিউনার কলব্যাক সেট করতে হবে। এটি বিদ্যমান থাকলে, পুরানো কলব্যাকটি আনসেট করা উচিত৷
HIDL 2.0 openSession(ITunerCallback callback) জেনারেট করে (Result result, ITunerSession session)
এআইডিএল void setTunerCallback(in ITunerCallback callback)
বর্ণনা:
  • HIDL HAL: একটি টিউনার সেশন বন্ধ করা অবশ্যই ব্যর্থ হবে না এবং শুধুমাত্র একবার জারি করতে হবে।
  • AIDL HAL: কোন টিউনার নেই এবং শুধুমাত্র টিউনার কলব্যাক আনসেট করতে হবে।
HIDL 2.0 close()
এআইডিএল unsetTunerCallback()
বর্ণনা: একটি নির্দিষ্ট প্রোগ্রাম টিউন.
HIDL 2.0 tune(ProgramSelector program) generates (Result result)
এআইডিএল void tune(in ProgramSelector program)
বর্ণনা: বাতাসে পরবর্তী বৈধ প্রোগ্রাম চায়। এআইডিএল-এ বিভ্রান্তি এড়াতে, scan নাম পরিবর্তন করে seek হয়েছে।
HIDL 2.0 scan(bool directionUp, bool skipSubChannel) generates (Result result)
এআইডিএল void seek(in boolean directionUp, in boolean skipSubChannel)
বর্ণনা: পার্শ্ববর্তী চ্যানেলের ধাপ, যা কোনো প্রোগ্রাম দ্বারা দখল করা যাবে না।
HIDL 2.0 step(bool directionUp) generates (Result result)
এআইডিএল void step(in boolean directionUp)
বর্ণনা: মুলতুবি থাকা টিউন, স্ক্যান (এইচআইডিএল-এ) বা সন্ধান (এআইডিএল-এ) বা ধাপ অপারেশন বাতিল করে।
HIDL 2.0 cancel()
এআইডিএল void cancel()
বর্ণনা: প্রোগ্রাম তালিকায় একটি ফিল্টার প্রয়োগ করে এবং onProgramListUpdated কলব্যাকের মাধ্যমে প্রোগ্রাম তালিকা আপডেট পাঠানো শুরু করে।
HIDL 2.0 startProgramListUpdates(ProgramFilter filter) generates (Result result)
এআইডিএল void startProgramListUpdates(in ProgramFilter filter)
বর্ণনা: প্রোগ্রাম তালিকা আপডেট পাঠানো বন্ধ করে.
HIDL 2.0 stopProgramListUpdates()
এআইডিএল void stopProgramListUpdates()
বর্ণনা: একটি প্রদত্ত কনফিগারেশন পতাকার বর্তমান সেটিং নিয়ে আসে।
HIDL 2.0 isConfigFlagSet(ConfigFlag flag) generates (Result result, bool value)
এআইডিএল boolean isConfigFlagSet(in ConfigFlag flag)
বর্ণনা: প্রদত্ত কনফিগারেশন পতাকা সেট করে।
HIDL 2.0 setConfigFlag(ConfigFlag flag, bool value) generates (Result result)
এআইডিএল void setConfigFlag(in ConfigFlag flag, boolean value)
বর্ণনা: বিক্রেতা-নির্দিষ্ট প্যারামিটার মান সেট করে।
HIDL 2.0 setParameters(vec<VendorKeyValue> parameters)

উৎপন্ন করে ,

(vec<VendorKeyValue> results)
এআইডিএল VendorKeyValue[] setParameters(in VendorKeyValue[] parameters)
বর্ণনা: বিক্রেতা-নির্দিষ্ট পরামিতি মান পুনরুদ্ধার করে।
HIDL 2.0 getParameters(vec<string> keys) generates (vec<VendorKeyValue> parameters)
এআইডিএল VendorKeyValue[] getParameters(in String[] keys)

ইন্টারফেস স্পষ্টীকরণ

অ্যাসিঙ্ক্রোনাস আচরণ

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

  • সমস্ত মুলতুবি টিউনিং অপারেশন বাতিল করুন।
  • পদ্ধতি ইনপুট এবং টিউনার অবস্থার উপর ভিত্তি করে অপারেশন প্রক্রিয়া করা যেতে পারে কিনা তা পরীক্ষা করুন।
  • টিউনিং টাস্ক শিডিউল করুন এবং তারপর Result (এইচআইডিএল-এ) বা status (এআইডিএল-এ) অবিলম্বে ফেরত দিন। Result বা status OK থাকলে, টিউনিং টাস্ক ব্যর্থ হলে (উদাহরণস্বরূপ, টাইমআউটের কারণে) বা সম্পূর্ণ হলে টিউনার কলব্যাক tuneFailed বা currentProgramInfoChanged কল করতে হবে।

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

রেসের অবস্থা

টিউনিং অপারেশনগুলির অসিঙ্ক্রোনাস আচরণের কারণে (উদাহরণস্বরূপ, টিউন, স্ক্যান (এইচআইডিএল-এ) বা সন্ধান (এআইডিএল-এ) এবং ধাপে, অপারেশন বাতিল করা এবং টিউনিং অপারেশনগুলির মধ্যে একটি রেস শর্ত বিদ্যমান। এইচএএল একটি টিউনিং অপারেশন সম্পূর্ণ করার পরে এবং কলব্যাক সম্পূর্ণ হওয়ার আগে যদি cancel কল করা হয়, তবে বাতিলটি উপেক্ষা করা যেতে পারে এবং কলব্যাকটি সম্পূর্ণ হওয়া উচিত এবং এইচএএল ক্লায়েন্ট দ্বারা গ্রহণ করা উচিত।

একইভাবে, HAL একটি প্রোগ্রাম তালিকা আপডেট সম্পূর্ণ করার পরে এবং onCurrentProgramInfoChanged কলব্যাক সম্পূর্ণ হওয়ার আগে যদি stopProgramListUpdates কল করা হয়, তাহলে stopProgramListUpdates উপেক্ষা করা যেতে পারে এবং কলব্যাক সম্পূর্ণ হওয়া উচিত।

ডেটা আকারের সীমা

যেহেতু বাইন্ডার লেনদেনের বাফারে একটি কঠিন সীমা রয়েছে, তাই সম্ভাব্য বড় আকারের ডেটা পাস করার কিছু ইন্টারফেস পদ্ধতির ডেটা সীমা AIDL HAL-এ স্পষ্ট করা হয়েছে।

  • getImage জন্য 1 MB-এর কম ছবি ফেরত দিতে হবে।
  • onProgramListUpdate জন্য প্রতিটি chunk 500kiB-এর কম হতে হবে। HAL বাস্তবায়নের মাধ্যমে বৃহত্তর প্রোগ্রাম তালিকাকে একাধিক খণ্ডে বিভক্ত করতে হবে এবং একাধিক কলব্যাকের মাধ্যমে পাঠানো হবে।

AIDL HAL ডেটা স্ট্রাকচারে পরিবর্তন

ইন্টারফেসের পরিবর্তন ছাড়াও, এই পরিবর্তনগুলি ব্রডকাস্ট রেডিও AIDL HAL-তে সংজ্ঞায়িত ডেটা স্ট্রাকচারে প্রয়োগ করা হয়েছে, যা AIDL-এর সুবিধা নেয়।

  • AIDL-এ Constant enum সরানো হয় এবং IBroadcastRadio তে const int হিসাবে সংজ্ঞায়িত করা হয়। ইতিমধ্যে, ANTENNA_DISCONNECTED_TIMEOUT_MS নাম পরিবর্তন করে ANTENNA_STATE_CHANGE_TIMEOUT_MS করা হয়েছে। TUNER_TIMEOUT_MS int একটি নতুন const যোগ করা হয়েছে৷ এই সময়ের মধ্যে সমস্ত সুর, সন্ধান এবং পদক্ষেপের ক্রিয়াকলাপ সম্পূর্ণ করতে হবে।
  • Enum RDS এবং Deemphasis AIDL-এ সরানো হয়েছে এবং AmFmRegionConfig এ const int হিসাবে সংজ্ঞায়িত করা হয়েছে। তদনুসারে, ProgramInfo তে fmDeemphasis এবং fmRds উভয়কেই int হিসাবে ঘোষণা করা হয়েছে, সংশ্লিষ্ট ফ্ল্যাগের একটি বিট গণনা ফলাফল। ইতিমধ্যে, D50 এবং D75 নাম পরিবর্তন করে যথাক্রমে DEEMPHASIS_D50 এবং DEEMPHASIS_D75 রাখা হয়েছে।
  • Enum ProgramInfoFlags AIDL-এ সরানো হয় এবং ProgramInfoFLAG_ উপসর্গ যুক্ত করে const int হিসাবে সংজ্ঞায়িত করা হয়। তদনুসারে, ProgramInfoinfoFlags int হিসাবে ঘোষণা করা হয়, পতাকাগুলির একটি বিট গণনা ফলাফল। TUNED এর নাম পরিবর্তন করে FLAG_TUNABLE করা হয়েছে, যাতে স্টেশনটি টিউন করা যেতে পারে তার সংজ্ঞাটি আরও ভালভাবে বর্ণনা করতে।
  • AmFmBandRange এ, scanSpacing এর নাম পরিবর্তন করে seekSpacing করা হয়েছে, যেহেতু scan নাম পরিবর্তন করে এআইডিএল-এ seek
  • যেহেতু AIDL-এ ইউনিয়নের ধারণাটি চালু করা হয়েছে, তাই HIDL HAL-এ সংজ্ঞায়িত MetadataKey এবং Metadata আর ব্যবহার করা হয় না। একটি এআইডিএল ইউনিয়ন Metadata এআইডিএল এইচএএল-এ সংজ্ঞায়িত করা হয়েছে। পূর্বে MetadataKey এ থাকা প্রতিটি enum মান এখন Metadata একটি ক্ষেত্র যার সংজ্ঞার উপর নির্ভর করে স্ট্রিং বা int-এর ধরন রয়েছে।

DAB রেডিও সমর্থন

এই বিভাগে DAB রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

AIDL ব্রডকাস্ট রেডিও HAL-এ DAB এবং DMB রেডিওর প্রাথমিক শনাক্তকারীর ধরন হল DAB_SID_EXTDAB_SID_EXT একটি 32-বিট পরিষেবা সনাক্তকারী (SIDs) ব্যবহার করে যাতে এটি DAB এবং DMB রেডিও উভয়ের SID উপস্থাপন করতে পারে।

প্রাথমিক শনাক্তকারী ছাড়াও, DAB_ENSEMBLE এবং DAB_FREQUENCY_KHZ মত মাধ্যমিক শনাক্তকারী সমর্থিত। এটি গুরুত্বপূর্ণ কারণ একাধিক DAB স্টেশন বিভিন্ন DAB_ENSEMBLE বা DAB_FREQUENCY_KHZ মান থাকাকালীন একটি DAB_SID_EXT ভাগ করতে পারে৷ সঠিক প্রোগ্রাম তালিকা আপডেট নিশ্চিত করতে, একই DAB_SID_EXT সহ স্টেশনগুলি ITunerCallback#onProgramListUpdated ব্যবহার করে একসাথে আপডেট করা হয়। এই আপডেটটি তারপর ব্রডকাস্ট রেডিও সার্ভিস এবং রেডিও ম্যানেজার এবং অবশেষে android.hardware.radio.ProgramList এর মাধ্যমে রেডিও অ্যাপে রিলে করা হয়।

মেটাডেটা

নিম্নলিখিত সারণীটি AIDL ব্রডকাস্ট রেডিও HAL-এ DAB-এর জন্য সমর্থিত মেটাডেটা নির্দিষ্ট দেখায়:

মেটাডেটা ক্ষেত্র বর্ণনা
dabEnsembleName (সংক্ষিপ্ত রূপ: dabEnsembleNameShort ) DAB স্টেশনের সমাহার নাম
dabServiceName ( dabServiceNameShort থেকে সংক্ষেপিত) DAB স্টেশনের পরিষেবার নাম
dabComponentName ( dabComponentNameShort থেকে সংক্ষেপিত) DAB স্টেশনের উপাদানের নাম

এইচডি রেডিও রূপান্তর

এই বিভাগে HD রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

HD_STATION_ID_EXT HD রেডিও স্টেশনগুলির প্রাথমিক শনাক্তকারী হিসাবে কাজ করে৷ স্টেশন শনাক্তকরণ আরও উন্নত করতে, HD_STATION_NAME এবং HD_STATION_LOCATION এর মতো মাধ্যমিক শনাক্তকারীগুলিও প্রদান করা হয়েছে৷ HD_STATION_LOCATION , যা অবস্থানের তথ্য প্রদান করে, Android 15-এ চালু করা হয়েছিল।

ডিজিটাল রেডিও সক্ষম বা অক্ষম করুন

Android 15 দিয়ে শুরু করে, আপনি ConfigFlag s সামঞ্জস্য করে ডিজিটাল রেডিও (যেমন HD রেডিও) সক্ষম বা অক্ষম করতে পারেন। FM রেডিওর জন্য এই সেটিং নিয়ন্ত্রণ করতে, FORCE_ANALOG_FM পতাকা ব্যবহার করুন; AM রেডিওর জন্য, FORCE_ANALOG_AM পতাকা ব্যবহার করুন। পতাকাটিকে false সেট করা HD রেডিও সক্ষম করে, যখন এটিকে true শক্তির এনালগ AM/FM রেডিওতে সেট করে।

HD চ্যানেল উপলব্ধ

Android 15 দিয়ে শুরু করে, বর্তমানে একটি HD রেডিও স্টেশনের জন্য উপলব্ধ HD চ্যানেলগুলিকে ProgramInfo.metadata এ 8 বিটের একটি বিট মাস্ক, Metadata#hdSubChannelsAvailable দ্বারা উপস্থাপন করা যেতে পারে। উদাহরণস্বরূপ, বাম থেকে বিট 1 এর মান এই HD স্টেশনের জন্য HD2 সাবচ্যানেল উপলব্ধ কিনা তা প্রতিনিধিত্ব করে।

সংকেত অধিগ্রহণ অবস্থা

অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণে, রেডিও অ্যাপগুলি ব্যবহারকারীদের HD রেডিও স্টেশনগুলির সংকেত অধিগ্রহণের অবস্থা দেখাতে পারে। এটি সহায়ক কারণ একটি শক্তিশালী HD সংকেত অর্জন করতে কখনও কখনও কয়েক মুহূর্ত সময় লাগতে পারে।

এই তথ্য প্রদান করতে, সিস্টেমটি স্ট্যাটাস ট্র্যাক করতে ProgramInfo.infoFlags ব্যবহার করে এবং ITunerCallback#onCurrentProgramInfoChanged.

ProgramInfo.infoFlags মধ্যে স্ট্যাটাস কীভাবে উপস্থাপন করা হয় তা এখানে:

  • বিট 6: HD রেডিও সংকেত অর্জিত হয়েছে কিনা তা নির্দেশ করে।
  • বিট 7: স্টেশন ইনফরমেশন সার্ভিস (SIS) ডেটা উপলব্ধ কিনা তা দেখায়। SIS স্টেশন এবং কী চলছে সে সম্পর্কে অতিরিক্ত তথ্য প্রদান করে।
  • বিট 8: HD ডিজিটাল অডিও উপলব্ধ কিনা তা বলে।

মেটাডেটা

নিম্নলিখিত সারণীটি Android 15 এবং উচ্চতর সংস্করণগুলির জন্য সমর্থিত HD রেডিও মেটাডেটা দেখায়৷

মেটাডেটা ক্ষেত্র বর্ণনা
commentShortDescription মন্তব্যের সংক্ষিপ্ত প্রসঙ্গ বর্ণনা
commentActualText মন্তব্যের পাঠ্য
commercial রেডিও বাণিজ্যিক
ufids বিষয়বস্তুর সাথে যুক্ত ইউনিক ফাইল আইডেন্টিফায়ার (UFIDs)
hdStationNameShort HD রেডিও স্টেশনের সংক্ষিপ্ত নাম বা সর্বজনীন সংক্ষিপ্ত নাম
hdStationNameLong HD রেডিও স্টেশনের দীর্ঘ নাম, স্লোগান বা স্টেশন থেকে একটি বার্তা।

জরুরী সতর্কতা

অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণে, জরুরি সতর্কতাগুলি HD রেডিও স্টেশনগুলির জন্য সমর্থিত হয় যাতে রেডিও অ্যাপ ব্যবহারকারীদের রেডিও স্টেশনগুলি থেকে পাঠানো জরুরি সতর্কতাগুলি জানানো হয়৷ জরুরী সতর্কতা ( Alert ) সাধারণ সতর্কতা প্রোটোকল (CAP) 1.2 স্ট্যান্ডার্ড অনুসরণ করে এবং নিম্নলিখিত সারণীতে দেখানো সতর্কতাগুলিকে সমর্থন করে:

সতর্কতা তথ্য বর্ণনা Enum মান উপলব্ধ
AlertStatus সতর্কতা বার্তার অবস্থা ACTUAL , EXERCISE , TEST
AlertMessageType জরুরী সতর্কতা বার্তার ধরন ALERT , UPDATE , CANCEL
AlertCategory জরুরি সতর্কতা বার্তার বিষয় ইভেন্টের বিভাগ GEO , MET , SAFETY , SECURITY , RESCUE , FIRE , HEALTH , ENV , TRANSPORT , INFRA , CBRNE , OTHER
AlertUrgency জরুরী সতর্কতা বার্তার বিষয় ঘটনা জরুরী IMMEDIATE , EXPECTED , FUTURE , PAST , UNKNOWN
AlertSeverity জরুরি সতর্কতা বার্তার বিষয় ঘটনার তীব্রতা EXTREME , SEVERE , MODERATE , MINOR , UNKNOWN
AlertCertainty জরুরি সতর্কতা বার্তার বিষয় ইভেন্টের নিশ্চিততা OBSERVED , LIKELY , POSSIBLE , UNLIKELY , UNKNOWN
আপনি বর্তমান সতর্কতা সম্পর্কে তথ্য দেখানোর জন্য Alert (যা টেবিলে তথ্য রয়েছে), সতর্কতা পাঠ্য বার্তা এবং AlertArea ব্যবহার করতে পারেন। Alert হল ProgramInfo তে একটি ঐচ্ছিক ক্ষেত্র যাতে এটি বর্তমান প্রোগ্রাম তথ্য এবং প্রোগ্রাম তালিকা আপডেটের জন্য টিউনার কলব্যাকের মাধ্যমে ব্রডকাস্ট রেডিও HAL থেকে রেডিও অ্যাপে পাঠানো যেতে পারে।

,

সম্প্রচার রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) এর সাথে কীভাবে কাজ করতে হয় তা নিম্নলিখিত বিভাগগুলি বর্ণনা করে।

ব্রডকাস্ট রেডিও HAL ইন্টারফেস

ব্রডকাস্ট রেডিও HAL সম্প্রচার রেডিও যেমন AM/FM এবং DAB রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার স্তরে ডেটা স্ট্রাকচার এবং ইন্টারফেস প্রদান করে।

HIDL 2.0 এবং AIDL ইন্টারফেস

সম্প্রচার রেডিও HAL নিম্নলিখিত বিভাগে বর্ণিত ইন্টারফেস ব্যবহার করে।

আইএ ঘোষণা শ্রোতা

IAnnouncementListener হল ঘোষণা শ্রোতার জন্য একটি কলব্যাক ইন্টারফেস, যা ঘোষণা গ্রহণের জন্য সম্প্রচারিত রেডিও HAL-এ নিবন্ধিত হতে পারে। ইন্টারফেসের নিম্নলিখিত পদ্ধতি রয়েছে:

আইএ ঘোষণা শ্রোতা
বর্ণনা: যখনই ঘোষণার তালিকা পরিবর্তিত হয় তখন কল করা হয়।
HIDL 2.0 oneway onListUpdated(vec<Announcement> announcements)
এআইডিএল oneway void onListUpdated(in Announcement[] announcements)

আইক্লোজহ্যান্ডেল

ICloseHandle হল একটি সাধারণ ক্লোজ হ্যান্ডেল যা একটি কলব্যাক অপসারণ করে যার জন্য একটি সক্রিয় ইন্টারফেসের প্রয়োজন নেই৷

আইক্লোজহ্যান্ডেল
বর্ণনা: হ্যান্ডেল বন্ধ করুন।
HIDL 2.0 close()
এআইডিএল void close()

আইটিউনার কলব্যাক

ITunerCallback হল একটি কলব্যাক ইন্টারফেস যা ব্রডকাস্ট রেডিও HAL দ্বারা HAL ক্লায়েন্ট পরিষেবায় আপডেট পাঠানোর জন্য ডাকা হয়।

আইটিউনার কলব্যাক
বর্ণনা: যখন একটি টিউনিং অপারেশন (টিউন, সিক (এআইডিএল) বা স্ক্যান (এইচআইডিএল-এ) এবং পদক্ষেপ সফল হয় তখন অ্যাসিঙ্ক্রোনাসভাবে ব্যর্থ হলে HAL দ্বারা ডাকা হয়।
HIDL 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: টিউন, সিক (এআইডিএল-এ) বা স্ক্যান (এইচআইডিএল-এ) বা পদক্ষেপ সফল হলে বলা হয়।
HIDL 2.0 oneway onTuneFailed(Result result, ProgramSelector selector)
এআইডিএল void onTuneFailed(in Result result, in ProgramSelector selector)
বর্ণনা: টিউন, সিক (এআইডিএল-এ) বা স্ক্যান (এইচআইডিএল-এ) বা পদক্ষেপ সফল হলে বলা হয়।
HIDL 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: প্রোগ্রাম তালিকা আপডেট করা হলে কল করা হয়; প্রতিটি খণ্ডের আকার 500kiB এ সীমাবদ্ধ হওয়া উচিত।
HIDL 2.0 oneway onProgramListUpdated(ProgramListChunk chunk)
এআইডিএল oneway onProgramListUpdated(ProgramListChunk chunk)
বর্ণনা: অ্যান্টেনা সংযুক্ত বা সংযোগ বিচ্ছিন্ন হলে কল করা হয়।
HIDL 2.0 oneway onAntennaStateChange(bool connected)
এআইডিএল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: যখন বিক্রেতা-নির্দিষ্ট প্যারামিটার মানগুলি HAL-এ অভ্যন্তরীণভাবে আপডেট করা হয় তখন কল করা হয় (HAL ক্লায়েন্ট দ্বারা setParameters কল করার পরে আহ্বান করবেন না)।
HIDL 2.0 oneway onParametersUpdated(vec<VendorKeyValue> parameters)
এআইডিএল void onParametersUpdated(in VendorKeyValue[] parameters)
বর্ণনা: এআইডিএল-এ নতুন। HAL-এ অভ্যন্তরীণভাবে কনফিগারেশন ফ্ল্যাগ আপডেট করা হলে কল করা হয় (HAL ক্লায়েন্ট দ্বারা setConfigFlag কল করার পরে আহ্বান করা উচিত নয়)।
HIDL 2.0 প্রযোজ্য নয়।
এআইডিএল void onConfigFlagUpdated(in ConfigFlag flag, in boolean value)

আইব্রডকাস্ট রেডিও

IBroadcastRadio হল ব্রডকাস্ট রেডিও HAL-এর প্রাথমিক ইন্টারফেস। HIDL 2.0 HAL-এ, টিউনারকে কল অপারেশন করতে ITunerSession ইন্টারফেস ব্যবহার করুন। যাইহোক, এক সময়ে সর্বাধিক একটি টিউনার সক্রিয় থাকে (প্রদত্ত প্রতিটি ব্রডকাস্ট রেডিও HAL উদাহরণে শুধুমাত্র একটি টিউনার চিপ থাকে)। ITunerSession AIDL ইন্টারফেস থেকে সরানো হয়েছে এবং এর ইন্টারফেসগুলি IBroadcastRadio এ সরানো হয়েছে।

আইব্রডকাস্ট রেডিও
বর্ণনা: একটি মডিউল এবং এর ক্ষমতার বিবরণ পান।
HIDL 2.0 getProperties() generates (Properties properties)
এআইডিএল Properties getProperties()
বর্ণনা: বর্তমান বা সম্ভাব্য AM/FM অঞ্চল কনফিগারেশন নিয়ে আসে।
HIDL 2.0 getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig config)
এআইডিএল AmFmRegionConfig getAmFmRegionConfig(bool full)
বর্ণনা: বর্তমান DAB অঞ্চল কনফিগারেশন নিয়ে আসে।
HIDL 2.0 getDabRegionConfig() generates (Result result, vec<DabTableEntry> config)
এআইডিএল DabTableEntry[] getDabRegionConfig()
বর্ণনা: রেডিও মডিউল ক্যাশে থেকে একটি চিত্র পায়। AIDL-এ, বাইন্ডার লেনদেন বাফারের একটি হার্ড সীমার কারণে ছবির আকার অবশ্যই 1MB এর কম হতে হবে।
HIDL 2.0 getImage(uint32_t id) generates (vec<uint8_t> image)
এআইডিএল byte[] getImage(in int id)
বর্ণনা: ঘোষণা শ্রোতা নিবন্ধন.
HIDL 2.0 registerAnnouncementListener(vec<AnnouncementType> enabled,IAnnouncementListener listener) generates (Result result, ICloseHandle closeHandle)
এআইডিএল ICloseHandle registerAnnouncementListener(in IAnnouncementListener listener, in AnnouncementType[] enabled)
বর্ণনা:
  • HIDL HAL: যখন একটি নতুন টিউনার সেশন খোলা হয়, তখন পুরানো সেশনটি অবশ্যই বন্ধ করতে হবে।
  • AIDL HAL: যেহেতু কোনো টিউনার সেশন উপলব্ধ নেই, শুধুমাত্র টিউনার কলব্যাক সেট করতে হবে। এটি বিদ্যমান থাকলে, পুরানো কলব্যাকটি আনসেট করা উচিত৷
HIDL 2.0 openSession(ITunerCallback callback) জেনারেট করে (Result result, ITunerSession session)
এআইডিএল void setTunerCallback(in ITunerCallback callback)
বর্ণনা:
  • HIDL HAL: একটি টিউনার সেশন বন্ধ করা অবশ্যই ব্যর্থ হবে না এবং শুধুমাত্র একবার জারি করতে হবে।
  • AIDL HAL: কোন টিউনার নেই এবং শুধুমাত্র টিউনার কলব্যাক আনসেট করতে হবে।
HIDL 2.0 close()
এআইডিএল unsetTunerCallback()
বর্ণনা: একটি নির্দিষ্ট প্রোগ্রাম টিউন.
HIDL 2.0 tune(ProgramSelector program) generates (Result result)
এআইডিএল void tune(in ProgramSelector program)
বর্ণনা: বাতাসে পরবর্তী বৈধ প্রোগ্রাম চায়। এআইডিএল-এ বিভ্রান্তি এড়াতে, scan নাম পরিবর্তন করে seek হয়েছে।
HIDL 2.0 scan(bool directionUp, bool skipSubChannel) generates (Result result)
এআইডিএল void seek(in boolean directionUp, in boolean skipSubChannel)
বর্ণনা: পার্শ্ববর্তী চ্যানেলের ধাপ, যা কোনো প্রোগ্রাম দ্বারা দখল করা যাবে না।
HIDL 2.0 step(bool directionUp) generates (Result result)
এআইডিএল void step(in boolean directionUp)
বর্ণনা: মুলতুবি থাকা টিউন, স্ক্যান (এইচআইডিএল-এ) বা সন্ধান (এআইডিএল-এ) বা ধাপ অপারেশন বাতিল করে।
HIDL 2.0 cancel()
এআইডিএল void cancel()
বর্ণনা: প্রোগ্রাম তালিকায় একটি ফিল্টার প্রয়োগ করে এবং onProgramListUpdated কলব্যাকের মাধ্যমে প্রোগ্রাম তালিকা আপডেট পাঠানো শুরু করে।
HIDL 2.0 startProgramListUpdates(ProgramFilter filter) generates (Result result)
এআইডিএল void startProgramListUpdates(in ProgramFilter filter)
বর্ণনা: প্রোগ্রাম তালিকা আপডেট পাঠানো বন্ধ করে.
HIDL 2.0 stopProgramListUpdates()
এআইডিএল void stopProgramListUpdates()
বর্ণনা: একটি প্রদত্ত কনফিগারেশন পতাকার বর্তমান সেটিং নিয়ে আসে।
HIDL 2.0 isConfigFlagSet(ConfigFlag flag) generates (Result result, bool value)
এআইডিএল boolean isConfigFlagSet(in ConfigFlag flag)
বর্ণনা: প্রদত্ত কনফিগারেশন পতাকা সেট করে।
HIDL 2.0 setConfigFlag(ConfigFlag flag, bool value) generates (Result result)
এআইডিএল void setConfigFlag(in ConfigFlag flag, boolean value)
বর্ণনা: বিক্রেতা-নির্দিষ্ট প্যারামিটার মান সেট করে।
HIDL 2.0 setParameters(vec<VendorKeyValue> parameters)

উৎপন্ন করে ,

(vec<VendorKeyValue> results)
এআইডিএল VendorKeyValue[] setParameters(in VendorKeyValue[] parameters)
বর্ণনা: বিক্রেতা-নির্দিষ্ট পরামিতি মান পুনরুদ্ধার করে।
HIDL 2.0 getParameters(vec<string> keys) generates (vec<VendorKeyValue> parameters)
এআইডিএল VendorKeyValue[] getParameters(in String[] keys)

ইন্টারফেস স্পষ্টীকরণ

অ্যাসিঙ্ক্রোনাস আচরণ

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

  • সমস্ত মুলতুবি টিউনিং অপারেশন বাতিল করুন।
  • পদ্ধতি ইনপুট এবং টিউনার অবস্থার উপর ভিত্তি করে অপারেশন প্রক্রিয়া করা যেতে পারে কিনা তা পরীক্ষা করুন।
  • টিউনিং টাস্ক শিডিউল করুন এবং তারপর Result (এইচআইডিএল-এ) বা status (এআইডিএল-এ) অবিলম্বে ফেরত দিন। Result বা status OK থাকলে, টিউনিং টাস্ক ব্যর্থ হলে (উদাহরণস্বরূপ, টাইমআউটের কারণে) বা সম্পূর্ণ হলে টিউনার কলব্যাক tuneFailed বা currentProgramInfoChanged কল করতে হবে।

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

রেসের অবস্থা

টিউনিং অপারেশনগুলির অসিঙ্ক্রোনাস আচরণের কারণে (উদাহরণস্বরূপ, টিউন, স্ক্যান (এইচআইডিএল-এ) বা সন্ধান (এআইডিএল-এ) এবং ধাপে, অপারেশন বাতিল করা এবং টিউনিং অপারেশনগুলির মধ্যে একটি রেস শর্ত বিদ্যমান। এইচএএল একটি টিউনিং অপারেশন সম্পূর্ণ করার পরে এবং কলব্যাক সম্পূর্ণ হওয়ার আগে যদি cancel কল করা হয়, তবে বাতিলটি উপেক্ষা করা যেতে পারে এবং কলব্যাকটি সম্পূর্ণ হওয়া উচিত এবং এইচএএল ক্লায়েন্ট দ্বারা গ্রহণ করা উচিত।

একইভাবে, HAL একটি প্রোগ্রাম তালিকা আপডেট সম্পূর্ণ করার পরে এবং onCurrentProgramInfoChanged কলব্যাক সম্পূর্ণ হওয়ার আগে যদি stopProgramListUpdates কল করা হয়, তাহলে stopProgramListUpdates উপেক্ষা করা যেতে পারে এবং কলব্যাক সম্পূর্ণ হওয়া উচিত।

ডেটা আকারের সীমা

যেহেতু বাইন্ডার লেনদেনের বাফারে একটি কঠিন সীমা রয়েছে, তাই সম্ভাব্য বড় আকারের ডেটা পাস করার কিছু ইন্টারফেস পদ্ধতির ডেটা সীমা AIDL HAL-এ স্পষ্ট করা হয়েছে।

  • getImage জন্য 1 MB-এর কম ছবি ফেরত দিতে হবে।
  • onProgramListUpdate জন্য প্রতিটি chunk 500kiB-এর কম হতে হবে। HAL বাস্তবায়নের মাধ্যমে বৃহত্তর প্রোগ্রাম তালিকাকে একাধিক খণ্ডে বিভক্ত করতে হবে এবং একাধিক কলব্যাকের মাধ্যমে পাঠানো হবে।

AIDL HAL ডেটা স্ট্রাকচারে পরিবর্তন

ইন্টারফেসের পরিবর্তন ছাড়াও, এই পরিবর্তনগুলি ব্রডকাস্ট রেডিও AIDL HAL-তে সংজ্ঞায়িত ডেটা স্ট্রাকচারে প্রয়োগ করা হয়েছে, যা AIDL-এর সুবিধা নেয়।

  • AIDL-এ Constant enum সরানো হয় এবং IBroadcastRadio তে const int হিসাবে সংজ্ঞায়িত করা হয়। ইতিমধ্যে, ANTENNA_DISCONNECTED_TIMEOUT_MS নাম পরিবর্তন করে ANTENNA_STATE_CHANGE_TIMEOUT_MS করা হয়েছে। TUNER_TIMEOUT_MS int একটি নতুন const যোগ করা হয়েছে৷ সমস্ত টিউন, সন্ধান এবং পদক্ষেপের অপারেশনগুলি অবশ্যই এই সময়ের মধ্যে সম্পন্ন করতে হবে।
  • এনাম RDS এবং Deemphasis এইডএলে সরানো হয় এবং AmFmRegionConfig কনস্ট ইন্ট হিসাবে সংজ্ঞায়িত করা হয়। অনুরূপভাবে, ProgramInfo ইনফোতে fmDeemphasis এবং fmRds উভয়ই ইনট হিসাবে ঘোষণা করা হয়, সংশ্লিষ্ট পতাকাগুলির কিছুটা গণনার ফলাফল। এদিকে, D50 এবং D75 যথাক্রমে DEEMPHASIS_D50 এবং DEEMPHASIS_D75 এ নামকরণ করা হয়েছে।
  • এনাম ProgramInfoFlags এইডএলে সরানো হয় এবং একটি উপসর্গের FLAG_ যুক্ত করে ProgramInfo ইনফোতে কনস্ট ইন্ট হিসাবে সংজ্ঞায়িত করা হয়। অনুরূপভাবে, ProgramInfo ইনফোতে infoFlags ইন্ট হিসাবে ঘোষণা করা হয়, পতাকাগুলির কিছুটা গণনার ফলাফল। স্টেশনটি টিউন করা যেতে পারে তার সংজ্ঞাটি আরও ভালভাবে বর্ণনা করার জন্য TUNED FLAG_TUNABLE নামকরণ করা হয়েছে।
  • AmFmBandRange , scanSpacing নামকরণ করা হয় seekSpacing , যেহেতু scan নামকরণ করা হয়েছে এইডলে seek জন্য।
  • যেহেতু ইউনিয়নের ধারণাটি এইডলে প্রবর্তিত হয়, তাই এইচআইডিএল হালে সংজ্ঞায়িত MetadataKey এবং Metadata আর ব্যবহার করা হয় না। একটি এইডল ইউনিয়ন Metadata এইডল হালে সংজ্ঞায়িত করা হয়েছে। MetadataKey পূর্বে প্রতিটি এনাম মান এখন তাদের সংজ্ঞাগুলির উপর নির্ভর করে স্ট্রিং বা আইএনটি সহ Metadata একটি ক্ষেত্র।

ড্যাব রেডিও সমর্থন

এই বিভাগটি ড্যাব রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

এইডল সম্প্রচার রেডিও হালে ডিএবি এবং ডিএমবি রেডিওর জন্য প্রাথমিক শনাক্তকারী প্রকারটি হ'ল DAB_SID_EXTDAB_SID_EXT একটি 32-বিট পরিষেবা শনাক্তকারী (এসআইডি) ব্যবহার করে যাতে এটি ডিএবি এবং ডিএমবি উভয় রেডিওর এসআইডি উপস্থাপন করতে পারে।

প্রাথমিক শনাক্তকারী ছাড়াও, DAB_ENSEMBLE এবং DAB_FREQUENCY_KHZ মতো গৌণ শনাক্তকারী সমর্থিত। এটি গুরুত্বপূর্ণ কারণ একাধিক ড্যাব স্টেশনগুলি DAB_SID_EXT ভাগ করতে পারে যখন বিভিন্ন DAB_ENSEMBLE বা DAB_FREQUENCY_KHZ মান রয়েছে। সঠিক প্রোগ্রামের তালিকার আপডেটগুলি নিশ্চিত করতে, একই DAB_SID_EXT সহ স্টেশনগুলি ITunerCallback#onProgramListUpdated ব্যবহার করে একসাথে আপডেট করা হয়েছে। এই আপডেটটি তখন ব্রডকাস্ট রেডিও পরিষেবা এবং রেডিও ম্যানেজার এবং অবশেষে android.hardware.radio.ProgramList মাধ্যমে রেডিও অ্যাপে রিলে করা হয়।

মেটাডেটা

নিম্নলিখিত টেবিলটি আইডল সম্প্রচার রেডিও হালে ড্যাব থেকে সমর্থিত মেটাডেটা স্পিফিকটি দেখায়:

মেটাডেটা ফিল্ড বর্ণনা
dabEnsembleName (সংক্ষেপে ফর্ম: dabEnsembleNameShort ) ড্যাব স্টেশনের এনসেম্বল নাম
dabServiceName ( dabServiceNameShort থেকে সংক্ষেপে) ড্যাব স্টেশনের পরিষেবা নাম
dabComponentName ( dabComponentNameShort থেকে সংক্ষেপে) ড্যাব স্টেশনের উপাদানটির নাম

এইচডি রেডিও রুপপোর্ট

এই বিভাগটি এইচডি রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

HD_STATION_ID_EXT এইচডি রেডিও স্টেশনগুলির প্রাথমিক সনাক্তকারী হিসাবে কাজ করে। স্টেশন সনাক্তকরণকে আরও বাড়ানোর জন্য, HD_STATION_NAME এবং HD_STATION_LOCATION মতো গৌণ শনাক্তকারীও সরবরাহ করা হয়। HD_STATION_LOCATION , যা অবস্থানের তথ্য সরবরাহ করে, অ্যান্ড্রয়েড 15 এ চালু করা হয়েছিল।

ডিজিটাল রেডিও সক্ষম বা অক্ষম করুন

অ্যান্ড্রয়েড 15 দিয়ে শুরু করে, আপনি ConfigFlag এস সামঞ্জস্য করে ডিজিটাল রেডিও (এইচডি রেডিওর মতো) সক্ষম বা অক্ষম করতে পারেন। এফএম রেডিওর জন্য এই সেটিংটি নিয়ন্ত্রণ করতে, FORCE_ANALOG_FM পতাকাটি ব্যবহার করুন; এএম রেডিওর জন্য, FORCE_ANALOG_AM পতাকাটি ব্যবহার করুন। পতাকাটি false হিসাবে সেট করা এইচডি রেডিও সক্ষম করে, যখন এটি true বাহিনী এনালগ এএম/এফএম রেডিওতে সেট করে।

এইচডি চ্যানেল উপলব্ধ

অ্যান্ড্রয়েড 15 দিয়ে শুরু করে, এইচডি রেডিও স্টেশনের জন্য বর্তমানে উপলব্ধ এইচডি চ্যানেলগুলি ProgramInfo.metadata 8 বিট, Metadata#hdSubChannelsAvailable কিছুটা মুখোশ দ্বারা প্রতিনিধিত্ব করা যেতে পারে। উদাহরণস্বরূপ, বাম দিক থেকে বিট 1 এর মান এই এইচডি 2 সাবচ্যানেল এই এইচডি স্টেশনের জন্য উপলব্ধ কিনা তা উপস্থাপন করে।

সংকেত অধিগ্রহণের স্থিতি

অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণগুলিতে, রেডিও অ্যাপ্লিকেশনগুলি ব্যবহারকারীদের এইচডি রেডিও স্টেশনগুলির সংকেত অধিগ্রহণের স্থিতি প্রদর্শন করতে পারে। এটি সহায়ক কারণ একটি শক্তিশালী এইচডি সিগন্যাল অর্জন করা কখনও কখনও কয়েক মুহুর্ত নিতে পারে।

এই তথ্য সরবরাহ করার জন্য, সিস্টেমটি স্ট্যাটাসটি ট্র্যাক করতে ProgramInfo.infoFlags ব্যবহার করে এবং ITunerCallback#onCurrentProgramInfoChanged.

এখানে কীভাবে স্ট্যাটাসটি ProgramInfo.infoFlags মধ্যে প্রতিনিধিত্ব করা হয়:

  • বিট 6: এইচডি রেডিও সিগন্যাল অর্জিত হয়েছে কিনা তা নির্দেশ করে।
  • বিট 7: স্টেশন তথ্য পরিষেবা (এসআইএস) ডেটা উপলব্ধ কিনা তা দেখায়। এসআইএস স্টেশন এবং কী খেলছে সে সম্পর্কে অতিরিক্ত তথ্য সরবরাহ করে।
  • বিট 8: এইচডি ডিজিটাল অডিও উপলব্ধ কিনা তা জানায়।

মেটাডেটা

নিম্নলিখিত টেবিলটি অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণগুলির জন্য সমর্থিত এইচডি রেডিও মেটাডেটা দেখায়।

মেটাডেটা ফিল্ড বর্ণনা
commentShortDescription মন্তব্য সংক্ষিপ্ত প্রসঙ্গ বর্ণনা
commentActualText মন্তব্য পাঠ্য
commercial রেডিও বাণিজ্যিক
ufids সামগ্রীর সাথে যুক্ত অনন্য ফাইল আইডেন্টিফায়ার (ইউএফআইডি)
hdStationNameShort এইচডি রেডিও স্টেশনের সংক্ষিপ্ত নাম বা সর্বজনীন সংক্ষিপ্ত নাম
hdStationNameLong এইচডি রেডিও স্টেশনের দীর্ঘ নাম, স্লোগান বা স্টেশন থেকে একটি বার্তা।

জরুরী সতর্কতা

অ্যান্ড্রয়েড 15 এবং উচ্চতর ক্ষেত্রে, জরুরী সতর্কতাগুলি এইচডি রেডিও স্টেশনগুলির জন্য রেডিও স্টেশনগুলি থেকে প্রেরিত জরুরী সতর্কতা সম্পর্কে রেডিও অ্যাপ্লিকেশন ব্যবহারকারীদের অবহিত করার জন্য সমর্থিত। জরুরী সতর্কতা ( Alert ) সাধারণ সতর্কতা প্রোটোকল (সিএপি) 1.2 স্ট্যান্ডার্ড অনুসরণ করে এবং নিম্নলিখিত সারণীতে প্রদর্শিত সতর্কতাগুলিকে সমর্থন করে:

সতর্কতা তথ্য বর্ণনা এনাম মান উপলব্ধ
AlertStatus সতর্কতা বার্তার স্থিতি ACTUAL , EXERCISE , TEST
AlertMessageType জরুরী সতর্কতা বার্তা প্রকার ALERT , UPDATE , CANCEL
AlertCategory জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের বিভাগ GEO , MET , SAFETY , SECURITY , RESCUE , FIRE , HEALTH , ENV , TRANSPORT , INFRA , CBRNE , OTHER
AlertUrgency জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের জরুরিতা IMMEDIATE , EXPECTED , FUTURE , PAST , UNKNOWN
AlertSeverity জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের তীব্রতা EXTREME , SEVERE , MODERATE , MINOR , UNKNOWN
AlertCertainty জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের নিশ্চিততা OBSERVED , LIKELY , POSSIBLE , UNLIKELY , UNKNOWN
আপনি বর্তমান সতর্কতা সম্পর্কে তথ্য দেখানোর জন্য Alert (যা টেবিলের মধ্যে তথ্য রয়েছে), সতর্কতা পাঠ্য বার্তা এবং AlertArea ব্যবহার করতে পারেন। Alert হ'ল ProgramInfo একটি al চ্ছিক ক্ষেত্র যাতে এটি বর্তমান প্রোগ্রামের তথ্য এবং প্রোগ্রামের তালিকার আপডেটের জন্য টিউনার কলব্যাকের মাধ্যমে ব্রডকাস্ট রেডিও এইচএল থেকে রেডিও অ্যাপ্লিকেশনগুলিতে প্রেরণ করা যায়।

,

নিম্নলিখিত বিভাগগুলি ব্রডকাস্ট রেডিও বাস্তবায়নের জন্য কীভাবে হার্ডওয়্যার অ্যাবস্ট্রাকশন স্তর (এইচএল) এর সাথে কাজ করবেন তা বর্ণনা করে।

সম্প্রচার রেডিও হাল ইন্টারফেস

সম্প্রচার রেডিও এইচএল এএম/এফএম এবং ড্যাব রেডিওর মতো সম্প্রচার রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার স্তরে ডেটা স্ট্রাকচার এবং ইন্টারফেস সরবরাহ করে।

HIDL 2.0 এবং সহায়তা ইন্টারফেস

সম্প্রচার রেডিও এইচএল নিম্নলিখিত বিভাগগুলিতে বর্ণিত ইন্টারফেসগুলি ব্যবহার করে।

আইয়ানননসেটলিস্টনার

IAnnouncementListener হ'ল ঘোষণা শ্রোতার জন্য কলব্যাক ইন্টারফেস, যা ঘোষণাগুলি পাওয়ার জন্য সম্প্রচার রেডিও এইচএলে নিবন্ধিত হতে পারে। ইন্টারফেসে নিম্নলিখিত পদ্ধতি রয়েছে:

আইয়ানননসেটলিস্টনার
বর্ণনা: যখনই ঘোষণার তালিকা পরিবর্তন হয়েছে তখন কল করা হয়েছে।
এইচআইডিএল 2.0 oneway onListUpdated(vec<Announcement> announcements)
এইডল oneway void onListUpdated(in Announcement[] announcements)

আইক্লোসহ্যান্ডেল

ICloseHandle হ'ল একটি কলব্যাক অপসারণের জন্য জেনেরিক ক্লোজ হ্যান্ডেল যা কোনও সক্রিয় ইন্টারফেসের প্রয়োজন হয় না।

আইক্লোসহ্যান্ডেল
বর্ণনা: হ্যান্ডেলটি বন্ধ করুন।
এইচআইডিএল 2.0 close()
এইডল void close()

Itunercallback

এইচএল ক্লায়েন্ট পরিষেবাটিতে আপডেটগুলি প্রেরণে ব্রডকাস্ট রেডিও এইচএল দ্বারা কল করা কলব্যাক ইন্টারফেসটি ITunerCallback

Itunercallback
বর্ণনা: এইচএল দ্বারা ডাকা হয় যখন একটি টিউনিং অপারেশন (টিউন, সিক (এইডলে) বা স্ক্যান (এইচআইডিএল) এবং পদক্ষেপ সফল হয়) অসাধারণভাবে ব্যর্থ হয়।
এইচআইডিএল 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এইডল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: টিউন, (এইডলে) বা স্ক্যান (এইচআইডিএলে), বা পদক্ষেপ সফল হওয়ার সময় কল করা হয়।
এইচআইডিএল 2.0 oneway onTuneFailed(Result result, ProgramSelector selector)
এইডল void onTuneFailed(in Result result, in ProgramSelector selector)
বর্ণনা: টিউন, (এইডলে) বা স্ক্যান (এইচআইডিএলে), বা পদক্ষেপ সফল হওয়ার সময় কল করা হয়।
এইচআইডিএল 2.0 oneway onCurrentProgramInfoChanged(ProgramInfo info)
এইডল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: প্রোগ্রামের তালিকা আপডেট হলে কল করা হয়; প্রতিটি অংশের আকার 500kib এর মধ্যে সীমাবদ্ধ হওয়া উচিত।
এইচআইডিএল 2.0 oneway onProgramListUpdated(ProgramListChunk chunk)
এইডল oneway onProgramListUpdated(ProgramListChunk chunk)
বর্ণনা: অ্যান্টেনা সংযুক্ত বা সংযোগ বিচ্ছিন্ন হয়ে গেলে কল করা হয়।
এইচআইডিএল 2.0 oneway onAntennaStateChange(bool connected)
এইডল void onCurrentProgramInfoChanged(in ProgramInfo info)
বর্ণনা: যখন বিক্রেতা-নির্দিষ্ট প্যারামিটার মানগুলি এইচএল-তে অভ্যন্তরীণভাবে আপডেট করা হয় তখন কল করা হয় (এইচএল ক্লায়েন্ট দ্বারা setParameters কল করার পরে অনুরোধ করবেন না)।
এইচআইডিএল 2.0 oneway onParametersUpdated(vec<VendorKeyValue> parameters)
এইডল void onParametersUpdated(in VendorKeyValue[] parameters)
বর্ণনা: এইডলে নতুন। যখন কনফিগারেশন পতাকাটি এইচএএল -তে অভ্যন্তরীণভাবে আপডেট করা হয় তখন কল করা হয় (এইচএল ক্লায়েন্ট দ্বারা setConfigFlag কল করার পরে আহ্বান করা উচিত নয়)।
এইচআইডিএল 2.0 প্রযোজ্য নয়।
এইডল void onConfigFlagUpdated(in ConfigFlag flag, in boolean value)

ইব্রোডকাস্ট্রাদিও

IBroadcastRadio হ'ল সম্প্রচার রেডিও হালের প্রাথমিক ইন্টারফেস। এইচআইডিএল ২.০ এইচএএল -তে, কল করার জন্য টিউনারে ITunerSession ইন্টারফেসটি ব্যবহার করুন। যাইহোক, বেশিরভাগ ক্ষেত্রে এক সময় সক্রিয় থাকে (প্রতিটি সম্প্রচারিত রেডিও এইচএল উদাহরণে কেবলমাত্র একটি টিউনার চিপ থাকে)। ITunerSession আইডএল ইন্টারফেসগুলি থেকে সরানো হয়েছিল এবং এর ইন্টারফেসগুলি IBroadcastRadio স্থানান্তরিত হয়েছিল।

ইব্রোডকাস্ট্রাদিও
বর্ণনা: একটি মডিউল এবং এর ক্ষমতাগুলির বিবরণ পান।
এইচআইডিএল 2.0 getProperties() generates (Properties properties)
এইডল Properties getProperties()
বর্ণনা: বর্তমান বা সম্ভাব্য এএম/এফএম অঞ্চল কনফিগারেশন আনতে পারে।
এইচআইডিএল 2.0 getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig config)
এইডল AmFmRegionConfig getAmFmRegionConfig(bool full)
বর্ণনা: বর্তমান ড্যাব অঞ্চল কনফিগারেশন আনতে পারে।
এইচআইডিএল 2.0 getDabRegionConfig() generates (Result result, vec<DabTableEntry> config)
এইডল DabTableEntry[] getDabRegionConfig()
বর্ণনা: রেডিও মডিউল ক্যাশে থেকে একটি চিত্র পান। এইডএলে, বাইন্ডার লেনদেন বাফারে একটি হার্ড সীমা থাকার কারণে চিত্রের আকারটি অবশ্যই 1MB এর চেয়ে কম হতে হবে।
এইচআইডিএল 2.0 getImage(uint32_t id) generates (vec<uint8_t> image)
এইডল byte[] getImage(in int id)
বর্ণনা: ঘোষণা শ্রোতা নিবন্ধন করে।
এইচআইডিএল 2.0 registerAnnouncementListener(vec<AnnouncementType> enabled,IAnnouncementListener listener) generates (Result result, ICloseHandle closeHandle)
এইডল ICloseHandle registerAnnouncementListener(in IAnnouncementListener listener, in AnnouncementType[] enabled)
বর্ণনা:
  • এইচআইডিএল এইচএল: যখন একটি নতুন টিউনার সেশনটি খোলা হয়, তখন পুরানো সেশনটি শেষ করতে হবে।
  • এইডল হাল: যেহেতু কোনও টিউনার সেশন উপলব্ধ নেই, কেবল টিউনার কলব্যাক সেট করা দরকার। যদি এটি বিদ্যমান থাকে তবে পুরানো কলব্যাকটি আনসেট করা উচিত।
এইচআইডিএল 2.0 openSession(ITunerCallback callback) উত্পন্ন করে (Result result, ITunerSession session)
এইডল void setTunerCallback(in ITunerCallback callback)
বর্ণনা:
  • এইচআইডিএল এইচএল: একটি টিউনার সেশন বন্ধ করা অবশ্যই ব্যর্থ হবে না এবং কেবল একবারই জারি করা উচিত।
  • এইডল হাল: কোনও টিউনার নেই এবং কেবল টিউনার কলব্যাকটি আনসেট করা দরকার।
এইচআইডিএল 2.0 close()
এইডল unsetTunerCallback()
বর্ণনা: একটি নির্দিষ্ট প্রোগ্রামে সুর।
এইচআইডিএল 2.0 tune(ProgramSelector program) generates (Result result)
এইডল void tune(in ProgramSelector program)
বর্ণনা: বাতাসে পরবর্তী বৈধ প্রোগ্রামটি সন্ধান করে। এইডলে বিভ্রান্তি এড়াতে, scan seek জন্য নামকরণ করা হয়েছে।
এইচআইডিএল 2.0 scan(bool directionUp, bool skipSubChannel) generates (Result result)
এইডল void seek(in boolean directionUp, in boolean skipSubChannel)
বর্ণনা: সংলগ্ন চ্যানেলের পদক্ষেপগুলি, যা কোনও প্রোগ্রামের দ্বারা দখল করা যায় না।
এইচআইডিএল 2.0 step(bool directionUp) generates (Result result)
এইডল void step(in boolean directionUp)
বর্ণনা: মুলতুবি সুর, স্ক্যান (এইচআইডিএল) বা অনুসন্ধান (এইডলে), বা পদক্ষেপ অপারেশনগুলি বাতিল করুন।
এইচআইডিএল 2.0 cancel()
এইডল void cancel()
বর্ণনা: প্রোগ্রামের তালিকায় একটি ফিল্টার প্রয়োগ করে এবং onProgramListUpdated কলব্যাকের মাধ্যমে প্রোগ্রামের তালিকা আপডেটগুলি প্রেরণ শুরু করে।
এইচআইডিএল 2.0 startProgramListUpdates(ProgramFilter filter) generates (Result result)
এইডল void startProgramListUpdates(in ProgramFilter filter)
বর্ণনা: প্রোগ্রামের তালিকা আপডেট প্রেরণ বন্ধ করে দেয়।
এইচআইডিএল 2.0 stopProgramListUpdates()
এইডল void stopProgramListUpdates()
বর্ণনা: প্রদত্ত কনফিগারেশন পতাকাটির বর্তমান সেটিংটি আনবে।
এইচআইডিএল 2.0 isConfigFlagSet(ConfigFlag flag) generates (Result result, bool value)
এইডল boolean isConfigFlagSet(in ConfigFlag flag)
বর্ণনা: প্রদত্ত কনফিগারেশন পতাকা সেট করে।
এইচআইডিএল 2.0 setConfigFlag(ConfigFlag flag, bool value) generates (Result result)
এইডল void setConfigFlag(in ConfigFlag flag, boolean value)
বর্ণনা: বিক্রেতা-নির্দিষ্ট পরামিতি মান সেট করে।
এইচআইডিএল 2.0 setParameters(vec<VendorKeyValue> parameters)

উত্পন্ন ,

(vec<VendorKeyValue> results)
এইডল VendorKeyValue[] setParameters(in VendorKeyValue[] parameters)
বর্ণনা: বিক্রেতা-নির্দিষ্ট পরামিতি মানগুলি পুনরুদ্ধার করে।
এইচআইডিএল 2.0 getParameters(vec<string> keys) generates (vec<VendorKeyValue> parameters)
এইডল VendorKeyValue[] getParameters(in String[] keys)

ইন্টারফেসের স্পষ্টতা

অ্যাসিনক্রোনাস আচরণ

যেহেতু প্রতিটি টিউনিং অপারেশন (উদাহরণস্বরূপ, টিউন, স্ক্যান (এইচআইডিএলে) বা সন্ধান (এইডলে) এবং পদক্ষেপ) সময়সাপেক্ষ হতে পারে এবং থ্রেডটি দীর্ঘ সময়ের জন্য অবরুদ্ধ করা উচিত নয়, তাই অপারেশনটি পরে সময় গ্রহণের সময়সূচী সময়সূচী নির্ধারণ করা উচিত এবং দ্রুত কোনও স্থিতি বা ফলাফল ফিরে আসে। বিস্তারিতভাবে, প্রতিটি অপারেশন করা উচিত:

  • সমস্ত মুলতুবি টিউনিং অপারেশন বাতিল করুন।
  • পদ্ধতি ইনপুট এবং টিউনারের স্থিতির ভিত্তিতে অপারেশনটি প্রক্রিয়া করা যায় কিনা তা পরীক্ষা করুন।
  • টিউনিং টাস্কটি নির্ধারণ করুন এবং তারপরে Result (এইচআইডিএলে) বা status (এইডলে) তাত্ক্ষণিকভাবে ফিরিয়ে দিন। যদি Result বা status OK থাকে তবে টিউনার কলব্যাক tuneFailed বা currentProgramInfoChanged কল করা উচিত যখন টিউনিং টাস্কটি ব্যর্থ হয়েছে (উদাহরণস্বরূপ, একটি সময়সীমার কারণে) বা সম্পূর্ণ হয়।

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

রেসের অবস্থা

টিউনিং অপারেশনগুলির অ্যাসিঙ্ক্রোনাস আচরণের কারণে (উদাহরণস্বরূপ, টিউন, স্ক্যান (এইচআইডিএলে) বা সন্ধান করুন (এইডলে) এবং পদক্ষেপ), অপারেশন বাতিলকরণ এবং টিউনিং অপারেশনগুলির মধ্যে একটি জাতি শর্ত রয়েছে। যদি এইচএল একটি টিউনিং অপারেশন শেষ করার পরে এবং কলব্যাকটি শেষ হওয়ার আগে cancel করা হয়, তবে বাতিলটি উপেক্ষা করা যেতে পারে এবং কলব্যাকটি শেষ হওয়া উচিত এবং এইচএল ক্লায়েন্ট দ্বারা গ্রহণ করা উচিত।

একইভাবে, যদি এইচএল একটি প্রোগ্রামের তালিকা আপডেট শেষ করার পরে stopProgramListUpdates ডাকা হয় এবং onCurrentProgramInfoChanged কলব্যাকটি সম্পূর্ণ হওয়ার আগে, stopProgramListUpdates উপেক্ষা করা যেতে পারে এবং কলব্যাকটি সম্পূর্ণ হওয়া উচিত।

ডেটা আকারের সীমা

যেহেতু বাইন্ডার লেনদেন বাফারে একটি হার্ড সীমা রয়েছে, তাই সম্ভাব্য বড় আকারের ডেটা পাস করার জন্য কিছু ইন্টারফেস পদ্ধতির ডেটা সীমাটি এইডএল এইচএএল -তে স্পষ্ট করা হয়েছে।

  • getImage প্রয়োজন চিত্রটি 1 এমবি এর চেয়ে কম ফিরে আসে।
  • onProgramListUpdate প্রতিটি chunk 500KIB এর চেয়ে কম হওয়া দরকার। বৃহত্তর প্রোগ্রামের তালিকাগুলি অবশ্যই এইচএল বাস্তবায়নের মাধ্যমে একাধিক খণ্ডগুলিতে বিভক্ত করতে হবে এবং একাধিক কলব্যাকের মাধ্যমে প্রেরণ করা উচিত।

এইডএল এইচএল ডেটা স্ট্রাকচারের পরিবর্তন

ইন্টারফেসগুলির পরিবর্তনগুলি ছাড়াও, এই পরিবর্তনগুলি সম্প্রচার রেডিও এইডএল এইচএল -তে সংজ্ঞায়িত ডেটা স্ট্রাকচারগুলিতে প্রয়োগ করা হয়েছে, যা এইডেলের সুবিধা নেয়।

  • Constant এনামকে এইডলে সরানো হয় এবং IBroadcastRadio কনস্ট ইন্ট হিসাবে সংজ্ঞায়িত করা হয়। এদিকে, ANTENNA_DISCONNECTED_TIMEOUT_MS নামকরণ করা হয়েছে ANTENNA_STATE_CHANGE_TIMEOUT_MS । একটি নতুন কনস্ট ইনট TUNER_TIMEOUT_MS যুক্ত করা হয়েছে। সমস্ত টিউন, সন্ধান এবং পদক্ষেপের অপারেশনগুলি অবশ্যই এই সময়ের মধ্যে সম্পন্ন করতে হবে।
  • এনাম RDS এবং Deemphasis এইডএলে সরানো হয় এবং AmFmRegionConfig কনস্ট ইন্ট হিসাবে সংজ্ঞায়িত করা হয়। অনুরূপভাবে, ProgramInfo ইনফোতে fmDeemphasis এবং fmRds উভয়ই ইনট হিসাবে ঘোষণা করা হয়, সংশ্লিষ্ট পতাকাগুলির কিছুটা গণনার ফলাফল। এদিকে, D50 এবং D75 যথাক্রমে DEEMPHASIS_D50 এবং DEEMPHASIS_D75 এ নামকরণ করা হয়েছে।
  • এনাম ProgramInfoFlags এইডএলে সরানো হয় এবং একটি উপসর্গের FLAG_ যুক্ত করে ProgramInfo ইনফোতে কনস্ট ইন্ট হিসাবে সংজ্ঞায়িত করা হয়। অনুরূপভাবে, ProgramInfo ইনফোতে infoFlags ইন্ট হিসাবে ঘোষণা করা হয়, পতাকাগুলির কিছুটা গণনার ফলাফল। স্টেশনটি টিউন করা যেতে পারে তার সংজ্ঞাটি আরও ভালভাবে বর্ণনা করার জন্য TUNED FLAG_TUNABLE নামকরণ করা হয়েছে।
  • AmFmBandRange , scanSpacing নামকরণ করা হয় seekSpacing , যেহেতু scan নামকরণ করা হয়েছে এইডলে seek জন্য।
  • যেহেতু ইউনিয়নের ধারণাটি এইডলে প্রবর্তিত হয়, তাই এইচআইডিএল হালে সংজ্ঞায়িত MetadataKey এবং Metadata আর ব্যবহার করা হয় না। একটি এইডল ইউনিয়ন Metadata এইডল হালে সংজ্ঞায়িত করা হয়েছে। MetadataKey পূর্বে প্রতিটি এনাম মান এখন তাদের সংজ্ঞাগুলির উপর নির্ভর করে স্ট্রিং বা আইএনটি সহ Metadata একটি ক্ষেত্র।

ড্যাব রেডিও সমর্থন

এই বিভাগটি ড্যাব রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

এইডল সম্প্রচার রেডিও হালে ডিএবি এবং ডিএমবি রেডিওর জন্য প্রাথমিক শনাক্তকারী প্রকারটি হ'ল DAB_SID_EXTDAB_SID_EXT একটি 32-বিট পরিষেবা শনাক্তকারী (এসআইডি) ব্যবহার করে যাতে এটি ডিএবি এবং ডিএমবি উভয় রেডিওর এসআইডি উপস্থাপন করতে পারে।

প্রাথমিক শনাক্তকারী ছাড়াও, DAB_ENSEMBLE এবং DAB_FREQUENCY_KHZ মতো গৌণ শনাক্তকারী সমর্থিত। এটি গুরুত্বপূর্ণ কারণ একাধিক ড্যাব স্টেশনগুলি DAB_SID_EXT ভাগ করতে পারে যখন বিভিন্ন DAB_ENSEMBLE বা DAB_FREQUENCY_KHZ মান রয়েছে। সঠিক প্রোগ্রামের তালিকার আপডেটগুলি নিশ্চিত করতে, একই DAB_SID_EXT সহ স্টেশনগুলি ITunerCallback#onProgramListUpdated ব্যবহার করে একসাথে আপডেট করা হয়েছে। এই আপডেটটি তখন ব্রডকাস্ট রেডিও পরিষেবা এবং রেডিও ম্যানেজার এবং অবশেষে android.hardware.radio.ProgramList মাধ্যমে রেডিও অ্যাপে রিলে করা হয়।

মেটাডেটা

নিম্নলিখিত টেবিলটি আইডল সম্প্রচার রেডিও হালে ড্যাব থেকে সমর্থিত মেটাডেটা স্পিফিকটি দেখায়:

মেটাডেটা ফিল্ড বর্ণনা
dabEnsembleName (সংক্ষেপে ফর্ম: dabEnsembleNameShort ) ড্যাব স্টেশনের এনসেম্বল নাম
dabServiceName ( dabServiceNameShort থেকে সংক্ষেপে) ড্যাব স্টেশনের পরিষেবা নাম
dabComponentName ( dabComponentNameShort থেকে সংক্ষেপে) ড্যাব স্টেশনের উপাদানটির নাম

এইচডি রেডিও রুপপোর্ট

এই বিভাগটি এইচডি রেডিও সমর্থন বর্ণনা করে।

শনাক্তকারী

HD_STATION_ID_EXT এইচডি রেডিও স্টেশনগুলির প্রাথমিক সনাক্তকারী হিসাবে কাজ করে। স্টেশন সনাক্তকরণকে আরও বাড়ানোর জন্য, HD_STATION_NAME এবং HD_STATION_LOCATION মতো গৌণ শনাক্তকারীও সরবরাহ করা হয়। HD_STATION_LOCATION , যা অবস্থানের তথ্য সরবরাহ করে, অ্যান্ড্রয়েড 15 এ চালু করা হয়েছিল।

ডিজিটাল রেডিও সক্ষম বা অক্ষম করুন

অ্যান্ড্রয়েড 15 দিয়ে শুরু করে, আপনি ConfigFlag এস সামঞ্জস্য করে ডিজিটাল রেডিও (এইচডি রেডিওর মতো) সক্ষম বা অক্ষম করতে পারেন। এফএম রেডিওর জন্য এই সেটিংটি নিয়ন্ত্রণ করতে, FORCE_ANALOG_FM পতাকাটি ব্যবহার করুন; এএম রেডিওর জন্য, FORCE_ANALOG_AM পতাকাটি ব্যবহার করুন। পতাকাটি false হিসাবে সেট করা এইচডি রেডিও সক্ষম করে, যখন এটি true বাহিনী এনালগ এএম/এফএম রেডিওতে সেট করে।

এইচডি চ্যানেল উপলব্ধ

অ্যান্ড্রয়েড 15 দিয়ে শুরু করে, এইচডি রেডিও স্টেশনের জন্য বর্তমানে উপলব্ধ এইচডি চ্যানেলগুলি ProgramInfo.metadata 8 বিট, Metadata#hdSubChannelsAvailable কিছুটা মুখোশ দ্বারা প্রতিনিধিত্ব করা যেতে পারে। উদাহরণস্বরূপ, বাম দিক থেকে বিট 1 এর মান এই এইচডি 2 সাবচ্যানেল এই এইচডি স্টেশনের জন্য উপলব্ধ কিনা তা উপস্থাপন করে।

সংকেত অধিগ্রহণের স্থিতি

অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণগুলিতে, রেডিও অ্যাপ্লিকেশনগুলি ব্যবহারকারীদের এইচডি রেডিও স্টেশনগুলির সংকেত অধিগ্রহণের স্থিতি প্রদর্শন করতে পারে। এটি সহায়ক কারণ একটি শক্তিশালী এইচডি সিগন্যাল অর্জন করা কখনও কখনও কয়েক মুহুর্ত নিতে পারে।

এই তথ্য সরবরাহ করার জন্য, সিস্টেমটি স্ট্যাটাসটি ট্র্যাক করতে ProgramInfo.infoFlags ব্যবহার করে এবং ITunerCallback#onCurrentProgramInfoChanged.

এখানে কীভাবে স্ট্যাটাসটি ProgramInfo.infoFlags মধ্যে প্রতিনিধিত্ব করা হয়:

  • বিট 6: এইচডি রেডিও সিগন্যাল অর্জিত হয়েছে কিনা তা নির্দেশ করে।
  • বিট 7: স্টেশন তথ্য পরিষেবা (এসআইএস) ডেটা উপলব্ধ কিনা তা দেখায়। এসআইএস স্টেশন এবং কী খেলছে সে সম্পর্কে অতিরিক্ত তথ্য সরবরাহ করে।
  • বিট 8: এইচডি ডিজিটাল অডিও উপলব্ধ কিনা তা জানায়।

মেটাডেটা

নিম্নলিখিত টেবিলটি অ্যান্ড্রয়েড 15 এবং উচ্চতর সংস্করণগুলির জন্য সমর্থিত এইচডি রেডিও মেটাডেটা দেখায়।

মেটাডেটা ফিল্ড বর্ণনা
commentShortDescription মন্তব্য সংক্ষিপ্ত প্রসঙ্গ বর্ণনা
commentActualText মন্তব্য পাঠ্য
commercial রেডিও বাণিজ্যিক
ufids সামগ্রীর সাথে যুক্ত অনন্য ফাইল আইডেন্টিফায়ার (ইউএফআইডি)
hdStationNameShort এইচডি রেডিও স্টেশনের সংক্ষিপ্ত নাম বা সর্বজনীন সংক্ষিপ্ত নাম
hdStationNameLong এইচডি রেডিও স্টেশনের দীর্ঘ নাম, স্লোগান বা স্টেশন থেকে একটি বার্তা।

জরুরী সতর্কতা

অ্যান্ড্রয়েড 15 এবং উচ্চতর ক্ষেত্রে, জরুরী সতর্কতাগুলি এইচডি রেডিও স্টেশনগুলির জন্য রেডিও স্টেশনগুলি থেকে প্রেরিত জরুরী সতর্কতা সম্পর্কে রেডিও অ্যাপ্লিকেশন ব্যবহারকারীদের অবহিত করার জন্য সমর্থিত। জরুরী সতর্কতা ( Alert ) সাধারণ সতর্কতা প্রোটোকল (সিএপি) 1.2 স্ট্যান্ডার্ড অনুসরণ করে এবং নিম্নলিখিত সারণীতে প্রদর্শিত সতর্কতাগুলিকে সমর্থন করে:

সতর্কতা তথ্য বর্ণনা এনাম মান উপলব্ধ
AlertStatus সতর্কতা বার্তার স্থিতি ACTUAL , EXERCISE , TEST
AlertMessageType জরুরী সতর্কতা বার্তা প্রকার ALERT , UPDATE , CANCEL
AlertCategory জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের বিভাগ GEO , MET , SAFETY , SECURITY , RESCUE , FIRE , HEALTH , ENV , TRANSPORT , INFRA , CBRNE , OTHER
AlertUrgency জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের জরুরিতা IMMEDIATE , EXPECTED , FUTURE , PAST , UNKNOWN
AlertSeverity জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের তীব্রতা EXTREME , SEVERE , MODERATE , MINOR , UNKNOWN
AlertCertainty জরুরী সতর্কতা বার্তার বিষয় ইভেন্টের নিশ্চিততা OBSERVED , LIKELY , POSSIBLE , UNLIKELY , UNKNOWN
আপনি বর্তমান সতর্কতা সম্পর্কে তথ্য দেখানোর জন্য Alert (যা টেবিলের মধ্যে তথ্য রয়েছে), সতর্কতা পাঠ্য বার্তা এবং AlertArea ব্যবহার করতে পারেন। Alert হ'ল ProgramInfo একটি al চ্ছিক ক্ষেত্র যাতে এটি বর্তমান প্রোগ্রামের তথ্য এবং প্রোগ্রামের তালিকার আপডেটের জন্য টিউনার কলব্যাকের মাধ্যমে ব্রডকাস্ট রেডিও এইচএল থেকে রেডিও অ্যাপ্লিকেশনগুলিতে প্রেরণ করা যায়।