private void ConnectToCam() { if (Servers.SelectedIndex < 0) { ShowSettingsPage(); return; } Settings settings = Settings.LoadSettings(Servers.Items[Servers.SelectedIndex]); IWifi wifi = new Wifi(); string server = wifi.GetSSID() == $"\"{settings.LocalSSID}\"" ? settings.LocalServerName : settings.RemoteServerName; string html = "<html><head><style>" + $"body{{Width:{CamWebView.Width - 16}px;Height:{CamWebView.Height - 16}px;}}" + $".loader{{left:{CamWebView.Width/2 - 8};margin:{CamWebView.Height/2 - 46}px auto;position:fixed;}}" + $"img{{width:{CamWebView.Width - 16};height:{CamWebView.Height - 16};position:fixed;}}" + "</style><link rel=\"stylesheet\" type=\"text/css\" href=\"car-cam.css\" /></head><body>" + "<div class=\"loader\">Loading...</div>" + $"<img class=\"camview\" src=\"http://{server}:{settings.CameraPort}/?action=stream\" onerror=\"this.src = '';\" />" + "</body></html>"; Device.BeginInvokeOnMainThread(() => CamWebView.LoadContent(html, DependencyService.Get <IBaseUrl>().Get())); }
private void ConnectToBroker() { if (Servers.SelectedIndex < 0) { ShowSettingsPage(); return; } if (_clientConnected) { return; } Settings settings = Settings.LoadSettings(Servers.Items[Servers.SelectedIndex]); if (!settings.EnableControls) { return; } IWifi wifi = new Wifi(); string server = wifi.GetSSID() == $"\"{settings.LocalSSID}\"" ? settings.LocalServerName : settings.RemoteServerName; string connectionString = $"tcp://{server}:{settings.MqttPort}"; Device.BeginInvokeOnMainThread(() => { if (!string.IsNullOrEmpty(settings.Username)) { client = MqttClientFactory.CreateClient(connectionString, Guid.NewGuid().ToString(), settings.Username, settings.Password); } else { client = MqttClientFactory.CreateClient(connectionString, Guid.NewGuid().ToString()); } client.Connected += ClientConnected; client.ConnectionLost += ClientConnectionLost; client.PublishArrived += ClientPublishArrived; IDeviceInfo device = new DeviceInfo(); string name = device.GetName(); try { client.Connect("car/DISCONNECT", QoS.BestEfforts, new MqttPayload(name), false, true); } catch (Exception ex) { Toaster(ex.Message, ToastPriority.Critical, ToastLength.Long); _clientConnected = false; } }); }