如何在 BrightScript 中检查网络连接
How to check for network connection in BrightScript
我正在尝试使用场景图识别 BrightScript 中的互联网连接。如果没有互联网,我想在互联网上显示一些错误屏幕。
我查看了 Roku 的文档,没有找到太多编码示例。
我发现我们可以使用 GetInfo().linkStatus
来获取网络状态
但我想添加观察者以在每次状态更改时获取状态。
您可以在 BrightScript 上检查 linkStatus 事件的消息端口,并将其状态反映到您的 SG 场景中。
这是一个例子:
在scene.xml中添加一个字段作为你在brs和SG之间的link状态接口,例如
<field id="offline" type="boolean" value="false" alwaysNotify="true" onChange="onOfflineChanged" />
然后,在 main.brs 中,创建一个 roDeviceInfo 实例(以防万一还没有)并分配您正在使用的相同消息端口:
m.deviceInfo = CreateObject("roDeviceInfo")
m.deviceInfo.setMessagePort(m.port)
在您的 roDeviceInfo 实例上启用 link 状态事件
m.deviceInfo.EnableLinkStatusEvent(true)
在等待来自您的 roMessagePort 的新消息时能够接收 roDeviceInfoEvent
事件。
每次从端口收到消息时,检查其类型并将新的link状态值分配给第一步创建的场景字段
if msgType = "roDeviceInfoEvent" and msg.isStatusMessage() then scene.offline = not msg.getInfo().linkStatus
回调应该在scene.brs文件中声明
function onOfflineChanged()
if(m.top.offline)
' your code here
end if
end function
就是这样。
为了额外的正确性,您应该在应用程序启动后立即检查其状态。你可以用
scene.offline = not m.deviceInfo.GetLinkStatus()
在进入 while(true) 循环之前。
我正在尝试使用场景图识别 BrightScript 中的互联网连接。如果没有互联网,我想在互联网上显示一些错误屏幕。
我查看了 Roku 的文档,没有找到太多编码示例。
我发现我们可以使用 GetInfo().linkStatus
来获取网络状态
但我想添加观察者以在每次状态更改时获取状态。
您可以在 BrightScript 上检查 linkStatus 事件的消息端口,并将其状态反映到您的 SG 场景中。
这是一个例子:
在scene.xml中添加一个字段作为你在brs和SG之间的link状态接口,例如
<field id="offline" type="boolean" value="false" alwaysNotify="true" onChange="onOfflineChanged" />
然后,在 main.brs 中,创建一个 roDeviceInfo 实例(以防万一还没有)并分配您正在使用的相同消息端口:
m.deviceInfo = CreateObject("roDeviceInfo")
m.deviceInfo.setMessagePort(m.port)
在您的 roDeviceInfo 实例上启用 link 状态事件
m.deviceInfo.EnableLinkStatusEvent(true)
在等待来自您的 roMessagePort 的新消息时能够接收 roDeviceInfoEvent
事件。
每次从端口收到消息时,检查其类型并将新的link状态值分配给第一步创建的场景字段
if msgType = "roDeviceInfoEvent" and msg.isStatusMessage() then scene.offline = not msg.getInfo().linkStatus
回调应该在scene.brs文件中声明
function onOfflineChanged()
if(m.top.offline)
' your code here
end if
end function
就是这样。
为了额外的正确性,您应该在应用程序启动后立即检查其状态。你可以用
scene.offline = not m.deviceInfo.GetLinkStatus()
在进入 while(true) 循环之前。