Как определить, что кабель локальной сети не подключен к телевизору Samsung (модель: QE55Q6FNA) (Tizen 3.6) - PullRequest
1 голос
/ 22 января 2020

Я создаю приложение для телевизора Samsung в JavaScript, используя webapis.js, теперь у меня есть проблема, чтобы определить, когда LAN кабель подключен / отсоединен. Мой телевизор подключен к inte rnet через переключатель. Когда я отсоединяю кабель inte rnet от коммутатора, я могу определить это через 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
     }
}

1 Ответ

1 голос
/ 23 января 2020

Я могу предложить вам использовать Systeminfo Publi c Web API для ваших целей.

Вы можете использовать:

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

, чтобы определить, подходит ли сетевой кабель. подключен.

Вы можете добавить прослушиватель для уведомлений об изменениях этого статуса с помощью:

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

, и вы будете получать события, когда кабель подключен / отключен.

РЕДАКТИРОВАТЬ: Вы можете использовать publi c Web API, чтобы определить, находится ли сеть в одном из двух состояний:

  • сетевой кабель подключен к телевизору, но сетевой коммутатор не имеет rnet доступ ( кабель значение "ATTACHED" ):
> 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", …}
  • сетевой кабель не подключен к телевизору ( cable значение "DETACHED" ):
> 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 не поддерживается регистрация приемника на физическом уровне, как указано в docs : "Изменение прослушивателя, зарегистрированного в свойстве ETHERNET_NETWORK, запускается при изменении свойств ipAddress и ipv6Address (сетевой уровень)."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...