【发布时间】:2019-05-15 19:25:28
【问题描述】:
我正在尝试使用场景图识别 BrightScript 中的互联网连接。如果没有互联网,我想在互联网上显示一些错误屏幕。
我查看了 Roku 的文档,在那里我没有找到太多的编码示例。
我发现我们可以使用GetInfo().linkStatus来获取网络状态
但我想添加观察者以在每次状态发生变化时获取状态。
【问题讨论】:
标签: roku brightscript
我正在尝试使用场景图识别 BrightScript 中的互联网连接。如果没有互联网,我想在互联网上显示一些错误屏幕。
我查看了 Roku 的文档,在那里我没有找到太多的编码示例。
我发现我们可以使用GetInfo().linkStatus来获取网络状态
但我想添加观察者以在每次状态发生变化时获取状态。
【问题讨论】:
标签: roku brightscript
您可以检查 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) 循环之前。
【讨论】: