我正在尝试使用Scenegraph识别BrightScript中的互联网连接。如果没有互联网,我想在互联网上显示一些错误屏幕。
我检查了Roku的文档,发现那里没有很多编码示例。
我发现我们可以使用GetInfo().linkStatus
来获取网络状态
但是我想添加观察者,以便每次状态更改时都能获得状态。
答案 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)循环之前。