개요

방송 라디오 스택은 그림 1과 같은 구성요소로 이루어져 있습니다.

방송 라디오 아키텍처
그림 1. 방송 라디오 아키텍처

라디오 참조 앱

라디오 컨트롤을 구현하는 방법에 관한 자세한 내용은 다음을 참고하세요. 라디오 컨트롤 구현

참조 역할을 하는 샘플 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) - 반환됩니다. 하세요. 라디오 튜너는 라디오 앱에서 호출할 수 있는 API (예: 미세 조정, 단계, 취소)를 정의합니다. BRS에 요청을 보냅니다 라디오에 정의된 콜백 메서드 (RadioTuner.Callback) 튜너는 현재 프로그램 정보, 프로그램 등 방송 라디오 HAL에 관한 업데이트를 전송합니다. 목록, 공급업체에서 정의한 매개변수까지 작동합니다.

방송 라디오 서비스

방송 라디오 서비스 (frameworks/base/services/core/java/com/android/server/broadcastradio)는 클라이언트입니다. 방송 라디오 HAL 서비스입니다. BRS는 방송 라디오로 여러 라디오 관리자를 조율합니다 HAL. BRS는 HAL 인터페이스 정의 언어 (HIDL)Android 인터페이스 정의 언어 (AIDL) 브로드캐스트 무선 HAL입니다. AIDL HAL 서비스가 있는 경우 BRS가 AIDL HAL에 연결됩니다. 그렇지 않은 경우에는 서비스가 HIDL HAL에 연결됩니다. BRS가 라디오 모듈 생성 사용할 수 있는 각 HAL 인스턴스 (예: AM, FM, DAB)

각 라디오 관리자는 BRS에 튜너 세션을 생성하도록 요청할 수 있습니다. 해당 무선 모듈과 통신합니다. 각 튜너 세션은 미세 조정, 단계 및 취소 (HAL 인터페이스에 정의됨)를 사용하여 해당하는 방송 라디오 HAL 인스턴스를 반환합니다. 한 튜너 세션이 HAL에서 콜백을 수신할 때 현재 프로그램 정보, 프로그램 목록, 구성 플래그 및 업데이트 관련 콜백이 동일한 네트워크에 연결된 모든 라디오 튜너로 라디오 모듈.

방송 라디오 HAL

방송 라디오의 HIDL 및 AIDL 인터페이스와 둘째, 방송 라디오 HAL 인터페이스.