SDL uses OnEventChanged
notification to appropriately manage the hmiLevel and audioStreamingState of each application during an active event.
Send notification with appropriate parameter value when active call on HMI has been started/ended.
Return the applications to their appropriate audio streaming state in the HMI when the event ends.
If the HMI wants to leave the app screen when the PHONE_CALL event occurs, the app's HMI state can be changed accordingly using the BC.OnAppDeactivated(appID)
and BC.OnAppActivated(appID)
notifications.
Upon receiving OnEventChanged(PHONE_CALL)
, SDL will:
isActive | Result |
---|---|
true | Move all apps with audioStreamingState AUDIBLE to NOT_AUDIBLE |
false | Remove all HMI state modifications that were applied during the event from each application |
EMERGENCY_EVENT is an HMI-specific event used when "Emergency event" or "Rear view camera" are active. The main idea of this from the SDL<->HMI point of view is that navigation/audio streaming mustn't interfere with Rear Camera View mode. The HMI is responsible for managing audio/video data while EMERGENCY_EVENT is active.
Upon receiving OnEventChanged(EMERGENCY_EVENT)
, SDL will:
isActive | Result |
---|---|
true | Move all apps with audioStreamingState AUDIBLE or STREAMABLE to NOT_AUDIBLE and NOT_STREAMABLE |
false | Remove all HMI state modifications that were applied during the event from each application |
While the event is active, the app is not allowed to stream audio and it will not be heard by the user (due to other audio and/or system events blocking it).
OnEventChanged(DEACTIVATE_HMI, isActive: false)
before activating an app.Upon receiving OnEventChanged(DEACTIVATE_HMI)
, SDL will:
isActive | Result |
---|---|
true | Change the hmiLevel of all applications currently in (FULL/LIMITED) to (BACKGROUND, NOT_AUDIBLE, NOT_STREAMABLE) |
false | Remove all HMI state modifications that were applied during the event from each application |
When this event is active, SDL rejects all app activation requests from the HMI.
SDL.ActivateApp(appID)
in case of app activation or BC.OnAppDeactivated(appID)
in case of app deactivation.When app is successfully registered and SDL receives OnEventChanged(AUDIO_SOURCE, isActive:true)
or OnEventChanged(EMBEDDED_NAVI, isActive:true)
, SDL changes hmiLevel and audioStreamingState of this application.
When app is activated during an active EMBEDDED_NAVI or AUDIO_SOURCE event, SDL sets the appropriate hmiLevel and audioStreamingState for the app.
Given that a system supports audio mixing ("MixingAudioSupported" = true at .ini file), then:
OnEventChanged(AUDIO_SOURCE, isActive=true)
, then SDL will change the navigation app's state to (LIMITED, AUDIBLE, STREAMABLE)SDL.ActivateApp(appID_of_navigation_app)
, then SDL will change the navigation app's state to (FULL, AUDIBLE, STREAMABLE).OnEventChanged(EMBEDDED_NAVI, isActive=true)
, SDL changes any media app in (LIMITED, AUDIBLE) to (LIMITED, ATTENUATED). After the EMBEDDED_NAVI event ends, SDL changes the media app's state to (LIMITED, AUDIBLE).AUDIO_SOURCE
or EMBEDDED_NAVI
event is activated appHMIType | Event | HMI State before | HMI State after |
---|---|---|---|
Media | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE, NOT_STREAMABLE) | (BACKGROUND, NOT_AUDIBLE, NOT_STREAMABLE) |
Navigation | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE, STREAMABLE) | (LIMITED, AUDIBLE, STREAMABLE) |
Projection | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE, STREAMABLE) | (LIMITED, AUDIBLE, STREAMABLE) |
Projection+Media | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE, STREAMABLE) | (LIMITED, NOT_AUDIBLE, STREAMABLE) |
Communication | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE, NOT_STREAMABLE) | (LIMITED, AUDIBLE, NOT_STREAMABLE) |
Non-media | AUDIO_SOURCE | (FULL/LIMITED, NOT_AUDIBLE, NOT_STREAMABLE) | (BACKGROUND, NOT_AUDIBLE, NOT_STREAMABLE) |
Media | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE, NOT_STREAMABLE) | (LIMITED, AUDIBLE, NOT_STREAMABLE) |
Navigation | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE, STREAMABLE) | (BACKGROUND, NOT_AUDIBLE, NOT_STREAMABLE) |
Projection | EMBEDDED_NAVI | (FULL/LIMITED, NOT_AUDIBLE, STREAMABLE) | (BACKGROUND, NOT_AUDIBLE, NOT_STREAMABLE) |
Projection+Media | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE, STREAMABLE) | (LIMITED, AUDIBLE, NOT_STREAMABLE) |
Communication | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE, NOT_STREAMABLE) | (LIMITED, AUDIBLE, NOT_STREAMABLE) |
Non-media | EMBEDDED_NAVI | (FULL/LIMITED, NOT_AUDIBLE, NOT_STREAMABLE) | (BACKGROUND, NOT_AUDIBLE, NOT_STREAMABLE) |
AUDIO_SOURCE
or EMBEDDED_NAVI
event appHMIType | Event | New HMI State | Keep event active |
---|---|---|---|
Media | AUDIO_SOURCE | (FULL, AUDIBLE, NOT_STREAMABLE) | false |
Navigation | AUDIO_SOURCE | (FULL, AUDIBLE, STREAMABLE) | true |
Projection | AUDIO_SOURCE | (FULL, NOT_AUDIBLE, STREAMABLE) | true |
Projection+Media | AUDIO_SOURCE | (FULL, AUDIBLE, STREAMABLE) | true |
Non-media | AUDIO_SOURCE | (FULL, NOT_AUDIBLE, NOT_STREAMABLE) | true |
Media | EMBEDDED_NAVI | (FULL, AUDIBLE, NOT_STREAMABLE) | true |
Navigation | EMBEDDED_NAVI | (FULL, AUDIBLE, STREAMABLE) | false |
Projection | EMBEDDED_NAVI | (FULL, NOT_AUDIBLE, STREAMABLE) | true |
Projection+Media | EMBEDDED_NAVI | (FULL, AUDIBLE, STREAMABLE) | true |
Non-media | EMBEDDED_NAVI | (FULL, NOT_AUDIBLE, NOT_STREAMABLE) | true |
Name | Type | Mandatory | Additional | Description |
---|---|---|---|---|
eventName | Common.EventTypes | true | Specifies the types of active events | |
isActive | Boolean | true | Must be 'true' when the event is started on HMI. Must be 'false' when the event is ended on HMI |
{ "jsonrpc" : "2.0", "method" : "BasicCommunication.OnEventChanged", "params" : { "eventName" : "PHONE_CALL", "isActive" : true } }