সম্প্রচার রেডিও বাস্তবায়নের জন্য হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (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 2.0 | openSession(ITunerCallback callback) জেনারেট করে (Result result, ITunerSession session) | |
এআইডিএল | void setTunerCallback(in ITunerCallback callback) | |
বর্ণনা:
| ||
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-এ সরানো হয় এবংProgramInfo
এFLAG_
উপসর্গ যুক্ত করে const int হিসাবে সংজ্ঞায়িত করা হয়। তদনুসারে,ProgramInfo
এinfoFlags
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_EXT
। DAB_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 2.0 | openSession(ITunerCallback callback) জেনারেট করে (Result result, ITunerSession session) | |
এআইডিএল | void setTunerCallback(in ITunerCallback callback) | |
বর্ণনা:
| ||
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-এ সরানো হয় এবংProgramInfo
এFLAG_
উপসর্গ যুক্ত করে const int হিসাবে সংজ্ঞায়িত করা হয়। তদনুসারে,ProgramInfo
এinfoFlags
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_EXT
। DAB_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 2.0 | openSession(ITunerCallback callback) জেনারেট করে (Result result, ITunerSession session) | |
এআইডিএল | void setTunerCallback(in ITunerCallback callback) | |
বর্ণনা:
| ||
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_EXT
। DAB_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_EXT
। DAB_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 চ্ছিক ক্ষেত্র যাতে এটি বর্তমান প্রোগ্রামের তথ্য এবং প্রোগ্রামের তালিকার আপডেটের জন্য টিউনার কলব্যাকের মাধ্যমে ব্রডকাস্ট রেডিও এইচএল থেকে রেডিও অ্যাপ্লিকেশনগুলিতে প্রেরণ করা যায়।