如何确定LAN电缆未连接到三星电视(型号:QE55Q6FNA)(Tizen 3.6)



我使用 JavaScript 为JavaScript构建应用程序webapis.js,现在我有一个问题来确定何时连接/分离LAN电缆。我的电视通过交换机连接到互联网。当我从交换机上分离互联网电缆时,我可以通过webapis.network.isConnectedToGateway();确定这一点,但是当我从交换机上分离LAN电缆时,电视上的应用程序卡住了,开发人员工具会抛出错误:">调试连接已关闭原因:Websocket已断开连接",所以我什至无法调试这种情况。我已经尝试将日志保存在cookies/LocalStorage中,但是一旦开发人员工具断开连接,它们就会被删除。

那么,如何确定LAN电缆未连接到电视。 注意:我不需要知道何时GATEWAY_DISCONNECTED,而是何时LAN_CABLE_DETACHED。

这是我到目前为止尝试过的:

function getIsConnected () {
try {
/// This will throw an exception when LAN is disconnected
var isConnectedToGateway = webapis.network.isConnectedToGateway();
console.log("isCableConnected value :: " + isConnectedToGateway);
return isConnectedToGateway;
/// won't help me here as when LAN is detached that doesn't work
//return Device.getNetworkConnectionType() === "LAN";
} catch (e) {
log.info("isCableConnected error :: " + e.message);
return 0;
}
}

/// I've also tried this, without any succes
webapis.network.getActiveConnectionType();
/// It only determines 2 states: GATEWAY_CONNECTED = 4; & GATEWAY_DISCONNECTED = 5;
/// which is not what I need 
webapis.network.addNetworkStateChangeListener(function (data) {
if (data === 2) { // LAN_CABLE_DETACHED
// never gets here
} else if (data === 1) { // LAN_CABLE_ATTACHED
// never gets here either
}
}

我可以建议你使用Systeminfo Public Web API来实现你的目的。

您可以使用:

tizen.systeminfo.getPropertyValue("ETHERNET_NETWORK", (s) => {console.log(s)}, (e) => {console.log(e)})

以确定网线是否已连接。

您可以通过以下方式添加有关此状态更改的通知的侦听器:

tizen.systeminfo.addPropertyValueChangeListener("ETHERNET_NETWORK", (s) => {console.log(s)})

然后,您将在电缆连接/断开时收到事件。

编辑: 可以使用公共 Web API 来确定网络是否处于以下两种状态之一:

网线
  • 已连接到电视,但网络交换机无法访问互联网(网线值为"已连接">(:
> tizen.systeminfo.getPropertyValue("ETHERNET_NETWORK", (s) => {console.log(s)}, (e) => {console.log(e)})
SystemInfoEthernetNetwork {cable: "ATTACHED", status: "DISCONNECTED", ipAddress: "", ipv6Address: "", macAddress: "ab:cd:ef:ab:cd:ef", …}
  • 线未连接到电视(网线值为"已分离">(:
> tizen.systeminfo.getPropertyValue("ETHERNET_NETWORK", (s) => {console.log(s)}, (e) => {console.log(e)})
SystemInfoEthernetNetwork {cable: "DETACHED", status: "DEACTIVATED", ipAddress: "", ipv6Address: "", macAddress: "ab:cd:ef:ab:cd:ef", …}

Web API 不支持在物理层上注册侦听器,如文档中所述:"在ETHERNET_NETWORK 属性上注册的更改侦听器在 ipAddress 上触发,ipv6Address 属性更改(网络层("。

最新更新