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
}
}