SystemEvents Interface
Estimated reading time: 7 minutes
An application can receive notifications of system events by the SystemEvents interface.
The below table shows supported event types.
| Event type | Description | SystemEventsTypeId | SystemEventInfo |
|---|---|---|---|
| Power Status | Inform when the status of power is changed. (i.e. display is turned on or turned off.) |
powerStatusChanged |
PowerStatusInfo |
| Network Interface | Inform when the status of network interface (eth/wlan) is changed. (i.e. network interface is disabled or enabled.) |
networkInterfaceChanged |
NetworkInterfaceInfo |
| Network Connection | Inform when the status of network connection (eth/wlan) is changed. (i.e. network connection is established or disconnected.) |
networkStatusChanged |
NetworkStatusInfo |
| External Input Status | Inform when the status of external input (HDMI only) is changed. (i.e. external input is connected or disconnected with the other device or input signal is detected or lost.) |
inputsStatusChanged |
InputsStatusInfo |
| Volume Status | Inform when the volume or mute status is changed. | volumeInfoChanged |
VolumeInfo |
| Request of Input Source Change[1] | Notify when the change of the input source is requested. | beforeInputSrcChange |
InputSrcInfo |
| Completion of Input Source Change[1] | Notify when the change of the external input is completed. | inputSrcChanged |
InputSrcInfo |
[1] Supported only on WebAppRuntime v1.2.65.11.
The SystemEvents interface offers methods to inform the changes of system events (shown in the above table) to an application. An application can control their status by receiving system event status. (i.e. An application can add the decimated object tag only when external input event has been detected.)
Interface: SystemEvents
Methods
- void addListener(SystemEventsTypeId type, SystemEventsCallback callback)
- void removeListener(SystemEventsTypeId type, SystemEventsCallback callback)
Interface: SystemEvent
SystemEvent is the event of SystemEventsCallback.
Attributes
- SystemEventsTypeId systemEventTypeId
- SystemEventInfo eventMessage
Methods
-
void preventDefault()
When the HTML5 application calls
preventDefault(), the propagation of the event is stopped. Its default action should not be taken as it normally would be. The HTML5 application should handle its default action explicitly.
This method is available inInputSrcInfo.
Enum: SystemEventsTypeId
It represents the system event types.
-
powerStatusChanged
Inform RC ON and RC OFF
-
networkInterfaceChanged
Inform network interface (eth/wlan) is enabled or disabled
-
networkStatusChanged
Inform network connection is established, IP status is changed
-
inputsStatusChanged
Inform external input status is changed (support only HDMI)
-
volumeInfoChanged
Inform volume and mute status is changed
-
beforeInputSrcChange
Notify when the change of the input source is requested.
-
inputSrcChanged
Notify when the change of the external input is completed.
Interface: SystemEventInfo
SystemEventInfo is the base interface of each event status.
Attributes
-
DOMTimeStamp timeStamp
timestampshows the time when the event has been fired.
Interface: PowerStatusInfo
PowerStatusInfo inherits SystemEventInfo and represents the power information.
Attributes
- PowerStatusType status
Enum: PowerStatusType
It represents the RC ON and OFF event types.
-
activeThis value represents RC ON
-
standbyThis value represents RC OFF
Interface: NetworkInterfaceInfo
NetworkInterfaceInfo inherits SystemEventInfo and represents the network interface (wlan and wired) information.
Attributes
-
NetworkInterfaceType netif
This attribute shows the network interface which is enabled or disabled
-
boolean enabled
enabledshows the network interface is enabled or disabled.trueif network interface is enabled.falseif network interface is disabled.
Enum: NetworkInterfaceType
NetworkInterfaceType represents network interface type.
wlan0eth0
Interface: NetworkStatusInfo
NetworkStatusInfo inherits SystemEventInfo and represents the network connection status (wlan and wired).
Attributes
-
NetworkConnectionStatus connectionInfo
connectionInfoshows the network connection information (IP address, netmask and so on). -
boolean enabled
enabledshows the network connection is established or not.trueif network is establishedfalseif network is disconnected
Interface: NetworkConnectionStatus
NetworkConnectionStatus represents the network connection detail status.
Attributes
- NetworkInterfaceType netif
- DOMString errorDetail
- DOMString hwAddress
- DOMString ipAddrV4
- DOMString ipAddrV6
- DOMString netmask
- DOMString gateway
- Array dns
Interface: InputsStatusInfo
InputsStatusInfo inherits SystemEventInfo and represents the external input (HDMI) status.
Attributes
-
DOMString uri
urishows external input which changes status. -
DOMString title
titleshows the name of external input (e.g. HDMI 1, HDMI 2, ...) -
boolean connection
connectionshows HDMI device connection status.trueif HDMI device is connected.falseif HDMI device is disconnected
-
boolean status
statusshows HDMI signal status.trueif HDMI input signal is detected.falseif HDMI input signal is lost.
Interface: VolumeInfo
VolumeInfo inherits SystemEventInfo and represents the volume status.
Attributes
-
Numeric volume
volumeshows volume value. -
boolean mute
muteshows volume is muted or not.trueif volume turn to muted.falseif mute is canceled.
Interface: InputSrcInfo
InputSrcInfo inherits SystemEventInfo and represents the information related to beforeInputSrcChange and inputSrcChanged .
Attributes
-
DOMString uri
urishows the URL of the external input. -
DOMString title
titleshows the external input name (e.g. HDMI 1, HDMI 2, ...) -
DOMString dispNum
dispNumshows the sequence number of the external input (e.g. “HDMI 1”: “1”)
Example
Define and register callbacks
// define callback to handle Power Status events
function onPowerStatusChanged(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.timestamp = " + event.eventMessage.timeStamp);
console.log("eventMessage.status = " + event.eventMessage.status);
}
// define callback to handle Network Interface events
function onNetworkInterfaceChanged(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.timestamp = " + event.eventMessage.timeStamp);
console.log("eventMessage.netif = " + event.eventMessage.netif);
console.log("eventMessage.enabled = " + event.eventMessage.enabled);
}
// define callback to handle Network Status events
function onNetworkStatusChanged(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.timestamp = " + event.eventMessage.timeStamp);
console.log("eventMessage.connectionInfo.netif = " + event.eventMessage.connectionInfo.netif);
console.log("eventMessage.connectionInfo.errorDetail = " + event.eventMessage.connectionInfo.errorDetail);
console.log("eventMessage.connectionInfo.hwAddress = " + event.eventMessage.connectionInfo.hwAddress);
console.log("eventMessage.connectionInfo.ipAddrV4 = " + event.eventMessage.connectionInfo.ipAddrV4);
console.log("eventMessage.connectionInfo.ipAddrV6 = " + event.eventMessage.connectionInfo.ipAddrV6);
console.log("eventMessage.connectionInfo.netmask = " + event.eventMessage.connectionInfo.netmask);
console.log("eventMessage.connectionInfo.gateway = " + event.eventMessage.connectionInfo.gateway);
console.log("eventMessage.connectionInfo.dns = " + event.eventMessage.connectionInfo.dns);
console.log("eventMessage.enabled = " + event.eventMessage.enabled);
}
// define callback to handle External Input Status events
function onInputsStatusChanged(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.timestamp = " + event.eventMessage.timeStamp);
console.log("eventMessage.uri = " + event.eventMessage.uri);
console.log("eventMessage.title = " + event.eventMessage.title);
console.log("eventMessage.connection = " + event.eventMessage.connection);
console.log("eventMessage.status = " + event.eventMessage.status);
}
// define callback to handle Volume Status events
function onVolumeInfoChanged(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.timestamp = " + event.eventMessage.timeStamp);
console.log("eventMessage.volume = " + event.eventMessage.volume);
console.log("eventMessage.mute = " + event.eventMessage.mute);
}
// define callback to handle request of Input Source Change
function onBeforeInputSrcChange(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.url = " + event.eventMessage.url);
console.log("eventMessage.title = " + event.eventMessage.title);
console.log("eventMessage.dispNum = " + event.eventMessage.dispNum);
}
// define callback to handle completion of Input Source Change
function onInputSrcChanged(event){
console.log("systemEventTypeId = " + event.systemEventTypeId);
console.log("eventMessage.url = " + event.eventMessage.url);
console.log("eventMessage.title = " + event.eventMessage.title);
console.log("eventMessage.dispNum = " + event.eventMessage.dispNum);
}
// register callbacks
sony.tv.systemevents.addListener('powerStatusChanged', onPowerStatusChanged);
sony.tv.systemevents.addListener('networkInterfaceChanged', onNetworkInterfaceChanged);
sony.tv.systemevents.addListener('networkStatusChanged', onNetworkStatusChanged);
sony.tv.systemevents.addListener('inputsStatusChanged', onInputsStatusChanged);
sony.tv.systemevents.addListener('volumeInfoChanged', onVolumeInfoChanged);
sony.tv.systemevents.addListener('beforeInputSrcChange', onBeforeInputSrcChange);
sony.tv.systemevents.addListener('inputSrcChanged', onInputSrcChanged);
// unregister callbacks
sony.tv.systemevents.removeListener('powerStatusChanged', onPowerStatusChanged);
sony.tv.systemevents.removeListener('networkInterfaceChanged', onNetworkInterfaceChanged);
sony.tv.systemevents.removeListener('networkStatusChanged', onNetworkStatusChanged);
sony.tv.systemevents.removeListener('inputsStatusChanged', onInputsStatusChanged);
sony.tv.systemevents.removeListener('volumeInfoChanged', onVolumeInfoChanged);
sony.tv.systemevents.removeListener('beforeInputSrcChange', onBeforeInputSrcChange);
sony.tv.systemevents.removeListener('inputSrcChanged', onInputSrcChanged);
