Now Playing Screen
The Now Playing Screen I implemented shows the track information listed from DBus (which comes from AVRCP Bluetooth)
The design of the screen is meant to mimic the BMW Navigation Radio information screen:
https://github.com/piersholt/wilhelm-docs/blob/master/radio/23/digital_old.jpg
Data Sources
The Now Playing
screen displays data from the global radioTextFieldsFlow
. This flow has t0-t6, corresponding to the factory radio title layouts.
BmwSingleLineHeader("Now Playing")
val header: State<RadioTextFields> =
NowPlayingTextFieldFlows.radioTextFieldsFlow.collectAsState(RadioTextFields())
BmwFullScreenTrackInfoHeader(
t0 = header.value.t0,
t1 = header.value.t1,
t2 = header.value.t2,
t3 = header.value.t3,
t4 = header.value.t4,
t5 = header.value.t5,
t6 = header.value.t6,
)
This flow is populated by two services, the RadioTextFieldReaderService
and the DbusTrackInfoPrinterService
:
The last-recieved information is what’s written to the screen, so it’s handy to use the Car Settings page to turn off the service you don’t want.
Other Track Info Printers
Before I added the HMI to the project, the original intent was to run it headless, with the track info being printed to messages that went to the BMBT screen. This is the responsibility of the ScreenTrackInfoPrinter
Audio Focus
The Audio Focus chooser on the NowPlaying Screen looks like this:
It is used to send a message to request which audio source from the pinout below you’d like to use:
In my car, I have the Aux wired up to an aux port in the center console. My BM53 is new enough that I can use the Nav/TV input as a secondary aux. I tried using the VCR input but that didn’t work on my tuner. When you set the input to Nav/Tv, pressing the mode button doesn’t cycle the sources, you have to send a message to go back to Aux, and then the source cycling works again.
Return to Top