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.
Send SDL.OnAppDeactivated to the active app when the phone call is started.
Resume the applications to their original state prior to the phone call event in the HMI when the event ends (see note below).
SDL does not send BC.ActivateApp or BC.OnResumeAudioSource to HMI after the phone call is ended.
Upon receiving OnEventChanged(PHONE_CALL)
, SDL will:
isActive | Result |
---|---|
true | Change the HMI state of all applications currently either in FULL or LIMITED to (BACKGROUND, NOT_AUDIBLE) |
false | Return applications to the same HMI state they had prior to the event |
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 to NOT_AUDIBLE |
false | Return applications to the same HMI state they had prior to the event |
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) |
false | Return applications to the same HMI state they had prior to the event |
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)SDL.ActivateApp(appID_of_navigation_app)
, then SDL will change the navigation app's state to (FULL, AUDIBLE).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) | (BACKGROUND, NOT_AUDIBLE) |
Navigation | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE) | (LIMITED, AUDIBLE) |
Non-media | AUDIO_SOURCE | (FULL/LIMITED, AUDIBLE) | (BACKGROUND, NOT_AUDIBLE) |
Media | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE) | (LIMITED, AUDIBLE) |
Navigation | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE) | (BACKGROUND, NOT_AUDIBLE) |
Non-media | EMBEDDED_NAVI | (FULL/LIMITED, AUDIBLE) | (BACKGROUND, NOT_AUDIBLE) |
AUDIO_SOURCE
or EMBEDDED_NAVI
event appHMIType | Event | New HMI State | Keep event active |
---|---|---|---|
Media | AUDIO_SOURCE | (FULL, AUDIBLE) | false |
Navigation | AUDIO_SOURCE | (FULL, AUDIBLE) | true |
Non-media | AUDIO_SOURCE | (FULL, NOT_AUDIBLE) | true |
Media | EMBEDDED_NAVI | (FULL, AUDIBLE) | true |
Navigation | EMBEDDED_NAVI | (FULL, AUDIBLE) | false |
Non-media | EMBEDDED_NAVI | (FULL, NOT_AUDIBLE) | 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 } }