using Shared.Common; using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone { /// /// 其他没法分类的功能的逻辑 /// public class HdlOtherFunctionLogic { #region ■ 变量声明___________________________ /// /// 其他没法分类的功能的逻辑 /// private static HdlOtherFunctionLogic m_Current = null; /// /// 其他没法分类的功能的逻辑 /// public static HdlOtherFunctionLogic Current { get { if (m_Current == null) { m_Current = new HdlOtherFunctionLogic(); } return m_Current; } } #endregion #region ■ 经纬度_____________________________ /// /// 添加App的经纬度上报事件 /// public void AddAppLatAndLonEvent() { Application.LocationAction += (lon, lat) => { //GPS坐标转成高德坐标 double out_lng, out_lat; HdlGpsLocationConvertLogic.Current.WGS84_to_GCJ02(lon, lat, out out_lng, out out_lat); //上报经纬度 this.ReceiveAppLatAndLon(out_lng.ToString(), out_lat.ToString()); }; } /// /// App的经纬度上报 /// /// /// private void ReceiveAppLatAndLon(string lon, string lat) { if (HdlCheckLogic.Current.IsAccountLoginOut() == true) { //如果已经退出登陆的话 return; } HdlThreadLogic.Current.RunThread(async () => { //经纬度上报采用mqtt的方式上报 try { //发送主题 string strTopic = "/ClientToCloud/" + Config.Instance.Guid + "/Report/Location"; //发送数据 var dic = new Dictionary(); dic["lon"] = lon; dic["lat"] = lat; var byteData = Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(dic)); await ZbGateway.RemoteMqttClient?.PublishAsync(new MQTTnet.MqttApplicationMessage { Topic = strTopic, Payload = byteData, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce } , System.Threading.CancellationToken.None); if (HdlUserCenterResourse.HideOption.WriteGpsPoint == 1) { string txtvalue = "lon:" + lon + " lat:" + lat; HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, txtvalue); HdlLogLogic.Current.WriteLog(-1, "经纬度上报 " + txtvalue); } } catch { }; }, ShowErrorMode.NO); } #endregion } }