샘플 Java 라디오 앱 (packages/apps/Car/Radio)은 참조 구현 역할을 합니다. 앱 서비스가 시작되면 라디오 관리자에게 라디오 튜너를 열도록 요청합니다. 그러면 앱은 라디오 튜너에 요청을 보낼 수 있습니다. 특정 라디오 채널이나 주파수에 맞추거나 사용할 수 있는 다음 라디오 채널을 찾아 조정하는 작업을 예로 들 수 있습니다. 앱은 라디오의 라디오 관리자 및 라디오 튜너로부터 현재 프로그램 정보, 라디오 프로그램 목록, 구성, 공급업체 정의 매개변수 등의 업데이트를 수신합니다. 참조 라디오 앱은 AM 및 FM 라디오만 지원합니다. OEM은 원하는 대로 라디오 앱을 수정하거나 교체할 수 있습니다.
라디오 관리자
앱이 라디오 관리자에게 튜너를 열도록 요청하면 라디오 관리자(frameworks/base/core/java/android/hardware/radio/RadioManager.java)는 방송 라디오 서비스 (BRS)에 튜너 세션을 열도록 요청한 다음 라디오 튜너(frameworks/base/core/java/android/hardware/radio/RadioTuner.java)로 세션을 래핑하여 앱에 반환합니다.
라디오 튜너는 라디오 앱에서 호출하고 BRS에 요청을 보낼 수 있는 API (예: 조정, 단계, 취소)를 정의합니다. 라디오 튜너에 정의된 콜백 메서드 (RadioTuner.Callback)는 현재 프로그램 정보, 프로그램 목록, 공급업체 정의 매개변수와 같은 방송 라디오 HAL에 관한 업데이트를 BRS에서 앱으로 전송합니다.
방송 라디오 서비스
방송 라디오 서비스(frameworks/base/services/core/java/com/android/server/broadcastradio)는 방송 라디오 HAL의 클라이언트 서비스입니다. BRS는 방송 라디오 HAL을 사용하여 여러 라디오 관리자를 조정합니다. BRS는 HAL 인터페이스 정의 언어 (HIDL) 및 Android 인터페이스 정의 언어 (AIDL) 방송 라디오 HAL을 지원합니다. BRS는 AIDL HAL 서비스가 있는 경우 AIDL HAL에 연결됩니다. AIDL HAL 서비스가 없으면 HIDL HAL에 연결됩니다. BRS는 사용 가능한 각 HAL 인스턴스 (예: AM, FM, DAB)에 맞는 라디오 모듈을 만듭니다.
각 라디오 관리자는 라디오 유형에 따라 상응하는 라디오 모듈에서 튜너 세션을 만들도록 BRS에 요청할 수 있습니다. 각 튜너 세션은 미세 조정, 단계, 취소 (HAL 인터페이스에 정의됨)와 같은 메서드를 호출하여 상응하는 방송 라디오 HAL 인스턴스에서 작업을 실행할 수 있습니다. 하나의 튜너 세션이 현재 프로그램 정보, 프로그램 목록, 구성 플래그, 공급업체 매개변수와 같은 HAL 업데이트에 관한 HAL 인스턴스에서 콜백을 수신하면 업데이트에 관한 콜백은 동일한 라디오 모듈에 연결된 모든 라디오 튜너로 전송됩니다.
브로드캐스트 라디오 HAL
방송 라디오의 HIDL 및 AIDL 인터페이스와 이 둘의 차이점에 관한 자세한 내용은 방송 라디오 HAL 인터페이스를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 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)."]]