SystemEvents Interface

Estimated reading time: 5 minutes

应用程序可以通过SystemEvents 接口接收系统事件的通知 。 下表显示了受支持的事件类型。

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 an input source change is requested. This notification will be sent before changing the input source. HDMI is the only input source supported. beforeInputSrcChange InputSrcInfo
Completion of Input Source Change[1] Notify when an input source is changed. This notification will be sent after changing the input source. HDMI is the only input source supported. inputSrcChanged InputSrcInfo

[1] Supported only on WebAppRuntime v1.2.65.11.

这个 SystemEvents 接口提供将系统事件的更改(如上表所示)通知应用程序的方法。 应用程序可以通过接收系统事件状态来控制它们的状态。 (i.e. 应用程序只能在检测到外部输入事件时添加抽取的对象标记。)

接口: SystemEvent

属性

  • SystemEventsTypeId systemEventTypeId
  • SystemEventInfo eventMessage

方法

  • void addListener(SystemEventsTypeId type, SystemEventsCallback callback)
  • void removeListener(SystemEventsTypeId type, SystemEventsCallback callback)

Enum: SystemEventsTypeId

它表示系统事件类型。

  • powerStatusChanged
    通知RC开启和关闭
  • networkInterfaceChanged
    通知网络接口(wan/lan)已启用或禁用
  • networkStatusChanged
    通知网络连接建立,IP状态改变
  • inputsStatusChanged
    更改外部输入状态(仅支持HDMI)
  • volumeInfoChanged
    通知音量和静音状态发生变化
  • beforeInputSrcChange
    请求更改输入源时通知。HDMI是唯一支持的输入源。
  • inputSrcChanged
    更改输入源时通知。HDMI是唯一支持的输入源。

接口: SystemEventInfo

此接口显示事件何时触发。

属性

  • DOMTimeStamp timeStamp

接口: PowerStatusInfo

这个接口继承 SystemEventInfo 表示功率信息。

属性

Enum: PowerStatusType

它表示RC打开和关闭事件类型。

  • active
    这个值表示RC 开启
  • standby
    这个值表示RC 关闭

接口: NetworkInterfaceInfo

这个接口继承 SystemEventInfo 表示网络接口(wlan和有线)信息。

属性

  • NetworkInterfaceType netif
    此属性显示启用或禁用的网络接口
  • boolean enabled
    此属性显示网络接口已启用或禁用。
    • true 如果启用网络接口。
    • false 如果网络接口被禁用。
Enum: NetworkInterfaceType

它表示网络接口类型。

  • wlan0
  • eth0

接口: NetworkStatusInfo

这个接口继承 SystemEventInfo 表示网络连接状态(wlan和有线)。

属性

  • NetworkConnectionStatus connectionInfo
    此属性显示网络连接信息(IP地址、网络掩码等)。
  • boolean enabled
    此属性显示网络连接是否已建立。
    • true 如果网络已经建立
    • false 如果网络断开
接口: NetworkConnectionStatus

这个接口继承 SystemEventInfo 并表示网络连接的详细状态。

属性
  • NetworkInterfaceType netif
  • DOMString errorDetail
  • DOMString hwAddress
  • DOMString ipAddrV4
  • DOMString ipAddrV6
  • DOMString netmask
  • DOMString gateway
  • Array dns

接口: InputsStatusInfo

这个接口继承 SystemEventInfo 并表示外部输入(HDMI)状态。

属性

  • DOMString uri
    此属性显示更改状态的外部输入。
  • DOMString title
    这个属性显示了外部输入的名称(例如,HDMI 1, HDMI 2,…)
  • boolean connection
    此属性显示HDMI设备连接状态。
    • true 如果HDMI设备已连接。
    • false 如果HDMI设备断开。
  • boolean status
    此属性显示HDMI信号状态。
    • true 如果检测到HDMI输入信号。
    • false 如果HDMI输入信号丢失。

接口: VolumeInfo

这个接口继承 SystemEventInfo 表示音量的状态。

属性

  • Numeric volume
    此属性显示音量值。
  • DOMString title
    这个属性显示了外部输入的名称(例如,HDMI 1, HDMI 2,…)
  • boolean connection
    此属性显示HDMI设备连接状态。
    • true 如果HDMI设备已连接。
    • false 如果HDMI设备断开。
  • boolean mute
    此属性显示HDMI信号状态。
    • true 如果音量变小。
    • false 如果取消静音。

接口: InputSrcInfo

这个接口继承 SystemEventInfo 表示输入源的相关信息 beforeInputSrcChangeinputSrcChanged .

属性

  • DOMString uri
    此属性显示外部输入源的uri。
  • DOMString title
    此属性显示外部输入名称(例如,HDMI 1, HDMI 2,…)
  • DOMString dispNum
    此属性显示外部输入的序列号(例如“HDMI 1”:“1”)

方法

  • void preventDefault()
    当HTML5应用程序调用这个方法时,事件的默认动作将不会被触发。 默认操作如下:
    1. 当HTML5应用程序包含HDMI Video 对象标签,HTML5应用程序中的对象标签处理并显示请求的输入源。 这意味着HTML5应用程序始终处于前台。
    2. 当HTML5应用程序不包含 HDMI Video 对象标签,显示外部输入源的屏幕显示在前台,HTML5应用程序显示在后台。

举例说明

定义和注册回调

// 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);
Last modified: 10 Apr 2019