אפליקציית רדיו לדוגמה ב-Java (packages/apps/Car/Radio) משמשת להטמעה לדוגמה. כששירות האפליקציה מתחיל, הוא מבקש מ-Radio Manager לפתוח מכשיר רדיו. לאחר מכן, האפליקציה יכולה לשלוח בקשות למכונה לכוונון רדיו, כמו כוונון לתחנת רדיו או תדר ספציפיים, או דילוג לתחנת הרדיו הזמינה הבאה. האפליקציה מקבלת עדכונים ממנהל הרדיו וממכשיר ה-Radio Tuner ב-Radio, כמו פרטי התוכנית הנוכחית, רשימות של תוכניות רדיו, הגדרות ופרמטרים שהוגדרו על ידי הספק. אפליקציית הרדיו של הבדיקה תומכת רק ברדיו AM ו-FM. יצרני ציוד מקורי יכולים לשנות או להחליף את אפליקציית הרדיו לפי הצורך.
מנהל הרדיו
כשהאפליקציה מבקשת מ-Radio Manager לפתוח מקלט, Radio Manager (frameworks/base/core/java/android/hardware/radio/RadioManager.java) מבקש מ-Broadcast Radio Service (BRS) לפתוח סשן מקלט, ואז עוטף את הסשן ב-Radio Tuner (frameworks/base/core/java/android/hardware/radio/RadioTuner.java) שמוחזר לאפליקציה. Radio Tuner מגדיר ממשקי API (כמו tune, step ו-cancel) שאפשר להפעיל מאפליקציות רדיו ולשלוח בקשות ל-BRS. שיטות קריאה חוזרת (RadioTuner.Callback) שמוגדרות ב-Radio Tuner שולחות מה-BRS לאפליקציות עדכונים לגבי HAL של רדיו השידור, כמו פרטי התוכנית הנוכחית, רשימות של תוכניות ופרמטרים שהוגדרו על ידי הספק.
שירות רדיו לשידור
שירות הרדיו של השידור (frameworks/base/services/core/java/com/android/server/broadcastradio) הוא שירות הלקוח של HAL של הרדיו של השידור. ה-BRS מתאם בין כמה מנהלי רדיו לבין HAL של רדיו לשידור. ב-BRS יש תמיכה ב-HALs של רדיו לשידור ב-שפת הגדרה לבניית ממשק HAL (HIDL) וב-שפת הגדרה לבניית ממשק Android (AIDL). ה-BRS מקושר ל-HAL של AIDL כשקיים שירות HAL של AIDL. אחרת, השירות מקושר ל-HAL של HIDL. ה-BRS יוצר מודול רדיו לכל מכונה זמינה של HAL (כמו AM, FM ו-DAB).
כל מנהל רדיו יכול לבקש מ-BRS ליצור סשן של מכוון בתדרים במודול הרדיו המתאים, בהתאם לסוג הרדיו. כל סשן של מקלט יכול להפעיל שיטות כמו tune, step ו-cancel (שמוגדרות בממשקי HAL) כדי לבצע פעולות במכונה המתאימה של HAL לרדיו השידור. כשסשן של ממיר אחד מקבל קריאה חוזרת מהמכונה של HAL לגבי עדכון HAL, כמו פרטי התוכנית הנוכחית, רשימת התוכניות, דגלי ההגדרה ופרמטרים של הספק, קריאות חוזרות לגבי העדכון נשלחות לכל ממירי הרדיו שמקושרים לאותו מודול רדיו.
שידור רדיו HAL
למידע נוסף על הממשקים HIDL ו-AIDL של רדיו השידור ועל ההבדלים ביניהם, ראו ממשק HAL של רדיו השידור.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Overview\n\nThe broadcast radio stack consists of the components illustrated in Figure 1.\n**Figure 1.** Broadcast Radio architecture.\n\nRadio reference app\n-------------------\n\nFor details about how to implement radio control, see\n[Radio control implementation](/docs/automotive/radio/radio-control-implementation).\n\nA sample Java radio app (`packages/apps/Car/Radio`) serves as a reference\nimplementation. When the app service starts, it requests Radio Manager to open a Radio Tuner. Then,\nthe app can send requests to the Radio Tuner, such as tuning to a specific radio station, frequency,\nor to seek the next available radio station. The app receives updates from the Radio Manager and\nRadio Tuner in Radio, such as current program information, radio program lists, configurations, and\nvendor-defined parameters. The reference Radio app only supports AM and FM radio. OEMs can modify or\nreplace the Radio app as desired.\n\nRadio Manager\n-------------\n\nWhen the app requests Radio Manager to open a tuner, the Radio Manager\n(`frameworks/base/core/java/android/hardware/radio/RadioManager.java`) requests the\nBroadcast Radio Service (BRS) to open a Tuner session and then wraps the session in a Radio Tuner\n(`frameworks/base/core/java/android/hardware/radio/RadioTuner.java`), which is returned\nto the app.\n\nThe Radio Tuner defines APIs (such as tune, step, and cancel) that can be called from radio apps\nand send requests to BRS. Callback methods (`RadioTuner.Callback`) defined in Radio\nTuner send updates about the broadcast radio HAL, such as current program information, program\nlists, and vendor-defined parameters, from the BRS to apps.\n\nBroadcast Radio Service\n-----------------------\n\nThe Broadcast Radio Service\n(`frameworks/base/services/core/java/com/android/server/broadcastradio`) is the client\nservice for Broadcast Radio HAL. The BRS coordinates multiple Radio Managers with Broadcast Radio\nHALs. The BRS supports\n[HAL interface definition language (HIDL)](/docs/core/architecture/hidl) and\n[Android interface definition language (AIDL)](/docs/core/architecture/aidl) broadcast\nradio HALs. The BRS links to the AIDL HAL when any AIDL HAL service exists;\notherwise, the service links to the HIDL HAL. The BRS creates a Radio Module\nfor each available HAL instance (such as AM, FM, and DAB).\n\nEach Radio Manager can request the BRS to create a tuner session on the\ncorresponding Radio Module, based on the type of radio. Each tuner session can call methods, such\nas tune, step, and cancel (defined in HAL interfaces) to perform operations on the\ncorresponding broadcast radio HAL instance. When one tuner session receives a callback from the HAL\ninstance on a HAL update, such as current program info, program list, configuration flags and,\nvendor parameters, callbacks about the update are sent to all Radio Tuners linked to the same\nRadio Module.\n\nBroadcast Radio HAL\n-------------------\n\n| In Android 13 and lower, versions of the BRS are provided in HIDL and AIDL. New features are added **only** to releases of Android 14 and higher.\n\nTo learn more about the HIDL and AIDL interfaces of broadcast radio and the differences between\nthe two, see\n[Broadcast Radio HAL interface](/docs/automotive/radio/broadcast-radio-hal)."]]