如何在 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) 循环之前。