如何在BrightScript中检查网络连接

时间:2019-05-14 09:38:55

标签: roku brightscript

我正在尝试使用Scenegraph识别BrightScript中的互联网连接。如果没有互联网,我想在互联网上显示一些错误屏幕。

我检查了Roku的文档,发现那里没有很多编码示例。

我发现我们可以使用GetInfo().linkStatus来获取网络状态

但是我想添加观察者,以便每次状态更改时都能获得状态。

1 个答案:

答案 0 :(得分:2)

您可以检查消息端口的BrightScript上的linkStatus事件,并将其状态反映到SG场景中。

这里是一个例子:

scene.xml 中添加一个字段,作为brs和SG之间的链接状态界面,例如

<field id="offline" type="boolean" value="false" alwaysNotify="true" onChange="onOfflineChanged" />

然后,在 main.brs 中创建一个roDeviceInfo实例(如果还没有的话)并分配您已经在使用的相同消息端口:

m.deviceInfo = CreateObject("roDeviceInfo")
m.deviceInfo.setMessagePort(m.port)

在roDeviceInfo实例上启用链接状态事件

m.deviceInfo.EnableLinkStatusEvent(true)

在等待来自roMessagePort的新消息时能够接收roDeviceInfoEvent事件。

每次从端口获取消息时,请检查其类型并将新的linkStatus值分配给第一步中创建的场景字段

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