背景
提供无线电台的收音机功能。
架构
UI:显示我的电台,附近的电台,调频等界面。 采用MVVM设计模式开发。
MediaConnection:作为桥梁,负责UI层与播放器层的之间的通信。
RadioMediaPlayer:封装Radio播放器API, 位于一个Service进程:
Network:加载附近网络电台。
Data Storage:保存电台播放信息,和缓存电台列表。
Hardware:定义了一组独立于车机平台的接口(HuRadio(调节收音机的能力),并为不同平台,提供了不同的实现。
硬件抽象层的实现
xxxCanbus
直接同Framework层的RadioService通信。在Framework层,自定义RadioService(Stub)
案例:
xxx1Audio播放一个电台的时序图
xxx2Radio
同Canbus通信, 由Canbus中的CarService调度Radio接口。
xxxHuRadio内部播放电台时序图: 注意这个时序图更加关注HuRadio内部的实现细节,不涉及SDK和App层
可以看到上图中有个LocalBroadCast 本地广播,用来接收底层CarSerive发出的和Radio有关的状态信息。