using System; using Newtonsoft.Json.Linq; using Shared.Common; using System.Collections.Generic; using Shared.Phone.Device.Logic; namespace Shared.Phone.Device.VideoIntercom { public class VideoMachine : FrameLayout { public VideoMachine() { } public static TempPassword tempPassword = null; public void Show(List videoInfosLists) { TopView view = new TopView(); this.AddChidren(view.TopRowView()); view.toptitleNameBtn.TextID = R.MyInternationalizationString.videoIntercom; view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; var middle = new VerticalRefreshLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); for (int i = 0; i < videoInfosLists.Count; i++) { var videoInfos = videoInfosLists[i]; var fLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(fLayout); var iconBtn = new Button { Width = Application.GetMinRealAverage(81), Height = Application.GetMinRealAverage(81), X = Application.GetRealWidth(58), Y = Application.GetRealHeight(40), UnSelectedImagePath = "Item/videoIntercom.png", }; fLayout.AddChidren(iconBtn); var nameBtn = new Button { TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextSize = 15, Y = Application.GetRealHeight(30), X = Application.GetRealWidth(176), Height = Application.GetRealHeight(60), Width = Application.GetRealWidth(400), Text = videoInfos.DeviceName, }; fLayout.AddChidren(nameBtn); var name1Btn = new Button { Text = videoInfos.RoomName, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, TextSize = 12, Y = nameBtn.Bottom + Application.GetRealHeight(3), X = Application.GetRealWidth(176), Height = Application.GetRealHeight(60), Width = Application.GetRealWidth(400), }; fLayout.AddChidren(name1Btn); var nextBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(104), UnSelectedImagePath = "Item/videoIntercomNext.png", X = Application.GetRealWidth(743 + 176), Y = Application.GetRealHeight(30), }; fLayout.AddChidren(nextBtn); var lineBtn = new Button { Width = Application.GetRealWidth(845), Height = 1, Y = fLayout.Height - 1, X = Application.GetRealWidth(176), BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; fLayout.AddChidren(lineBtn); var clickBtn = new Button { Height = Application.GetRealHeight(160), }; fLayout.AddChidren(clickBtn); clickBtn.MouseUpEventHandler += (sen, e) => { #if iOS GateWay.Ios.ESVideoInfo eSVideoInfo = new GateWay.Ios.ESVideoInfo(); eSVideoInfo.DeviceName = videoInfos.DeviceName; eSVideoInfo.ESVideoUUID = videoInfos.ESVideoUUID; eSVideoInfo.ESRoomID = videoInfos.ESRoomID; eSVideoInfo.RoomName = videoInfos.RoomName; GateWay.Ios.ESVideo.ShowESVideoMonitor(eSVideoInfo); #elif Android ((BaseActivity)Application.Activity).AudioRecord((result) => { if (result == false) { return; } Shared.Phone.VideoPhone.ESVideoInfo eSVideoInfo = new Shared.Phone.VideoPhone.ESVideoInfo(); eSVideoInfo.DeviceName = videoInfos.DeviceName; eSVideoInfo.ESVideoUUID = videoInfos.ESVideoUUID; eSVideoInfo.ESRoomID = videoInfos.ESRoomID; eSVideoInfo.RoomName = videoInfos.RoomName; Shared.Phone.VideoPhone.ESVideo.ShowESVideoMonitor(eSVideoInfo); }); #endif }; } addQRCodeLayout(middle); } private void addQRCodeLayout(VerticalRefreshLayout middle) { // var fLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; //二维码icon var iconBtn = new Button { Width = Application.GetMinRealAverage(81), Height = Application.GetMinRealAverage(81), X = Application.GetRealWidth(58), Y = Application.GetRealHeight(40), UnSelectedImagePath = "Item/QRCode.png", }; fLayout.AddChidren(iconBtn); // 名称 var nameBtn = new Button { TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextSize = 15, Y = Application.GetRealHeight(50), X = Application.GetRealWidth(176), Height = Application.GetRealHeight(60), Width = Application.GetRealWidth(400), Text = "二维码/临时密码", }; fLayout.AddChidren(nameBtn); //右箭头 var nextBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(104), UnSelectedImagePath = "Item/videoIntercomNext.png", X = Application.GetRealWidth(743 + 176), Y = Application.GetRealHeight(30), }; fLayout.AddChidren(nextBtn); var clickBtn = new Button { Height = Application.GetRealHeight(160), }; fLayout.AddChidren(clickBtn); clickBtn.MouseUpEventHandler += (sen, e) => { var qrCode = new TempQRCode(); UserView.HomePage.Instance.AddChidren(qrCode); UserView.HomePage.Instance.PageIndex += 1; qrCode.Show(); }; middle.AddChidren(fLayout); } /// /// 判断账号是否支持可视对讲 /// /// 可视对讲图标的父控件 public async static void AccountSupportVideo(FrameLayout topFrameLayout) { var jobject = new JObject(); jobject.Add("RequestVersion", CommonPage.RequestVersion); jobject.Add("RequestSource", "0"); jobject.Add("HomeID", Config.Instance.HomeId); var url = "https://developer.hdlcontrol.com/ProposedProductionApi/VideoIntercom/CheckBindRecord"; var str = await Send.HttpWebRequest(url, jobject.ToString(), "POST", 3, true); if (!string.IsNullOrEmpty(str)) { try { var json = JObject.Parse(str); if (json != null) { var stateCode = json["StateCode"].ToString(); //可视对讲快捷方式 var videoIntercomBtn = new Button(); videoIntercomBtn.Gravity = Gravity.CenterVertical; videoIntercomBtn.UnSelectedImagePath = "Item/videoIntercom.png"; videoIntercomBtn.Width = Application.GetMinRealAverage(69); videoIntercomBtn.Height = Application.GetMinRealAverage(69); List videoList= new List(); if (stateCode == "Success") {//判断这个账号是否绑定; topFrameLayout.AddChidren(videoIntercomBtn); CloudsVideo cloudsVideo = Newtonsoft.Json.JsonConvert.DeserializeObject(json["ResponseData"].ToString()); videoList = await GetVideoInfoList(cloudsVideo); } if (UserCenter.UserCenterResourse.ResidenceOption.SafetyShortcut) { videoIntercomBtn.X = Application.GetRealWidth(746 + 10); } else { videoIntercomBtn.X = Application.GetRealWidth(850 + 10); } videoIntercomBtn.MouseUpEventHandler += (sender, e) => { var videoMachine = new Device.VideoIntercom.VideoMachine(); UserView.HomePage.Instance.AddChidren(videoMachine); UserView.HomePage.Instance.PageIndex += 1; videoMachine.Show(videoList); }; } } catch { } } } /// /// 获取可视对讲列表 /// static async System.Threading.Tasks.Task> GetVideoInfoList(CloudsVideo clouds) { List eSVideoInfosList = new List(); tempPassword = new TempPassword(); var jobject = new JObject(); jobject.Add("cmtID", clouds.FLCommunityID); jobject.Add("unitno", clouds.FLBuildingID); jobject.Add("method", "getUUIDList"); var url = " http://112.74.164.111:180/api.php/Device/getmonitorUUID"; var str = await Send.HttpWebRequest(url, jobject.ToString(), "POST"); if (string.IsNullOrEmpty(str)) { return eSVideoInfosList; } var json = JObject.Parse(str); if (json == null) { return eSVideoInfosList; } if (json["resCode"].ToString() != "0") { return eSVideoInfosList; } var list = Newtonsoft.Json.JsonConvert.DeserializeObject>>(json["list"].ToString()); if (list.Count == 0) { return eSVideoInfosList; } foreach (var videoInfo in list) { VideoCalss eSVideoInfo = new VideoCalss(); eSVideoInfo.ESRoomID = int.Parse(clouds.FLRoomID); string str1 = clouds.FLBuildingID.Substring(0, 2).TrimStart('0'); string str2 = clouds.FLBuildingID.Substring(2, 2).TrimStart('0'); eSVideoInfo.RoomName = str1 +Language.StringByID( R.MyInternationalizationString.dong) + str2 + Language.StringByID(R.MyInternationalizationString.unit); eSVideoInfo.DeviceName = videoInfo["aliasName"]; if (videoInfo["uuid"].Contains(",")) { var uuid = videoInfo["uuid"].Split(','); eSVideoInfo.ESVideoUUID = uuid[0]; } else { eSVideoInfo.ESVideoUUID = videoInfo["uuid"]; } eSVideoInfosList.Add(eSVideoInfo); } // 初始化tempPassword对象 tempPassword.CommunityID = clouds.FLCommunityID; tempPassword.FromTime = GetCurrentTimeStamp(); tempPassword.ValidTime = GetTomorrowTimeStamp(); tempPassword.Unitno = clouds.FLBuildingID; tempPassword.Roomno = clouds.FLRoomID; tempPassword.Code = getCode(); tempPassword.NumTimes = "5"; tempPassword.UserKey = clouds.UserKey; tempPassword.SecretKey= clouds.FLSecretKey; return eSVideoInfosList; } /// /// 获取当前时间戳 /// /// public static string GetCurrentTimeStamp() { //TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); //return Convert.ToInt64(ts.TotalSeconds).ToString(); System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 相差秒数 } /// /// 获取当前时间戳 /// /// public static string GetTomorrowTimeStamp() { //TimeSpan ts = DateTime.Now.AddDays(1) - new DateTime(1970, 1, 1, 0, 0, 0, 0); //return Convert.ToInt64(ts.TotalSeconds).ToString(); System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 return ((long)(DateTime.Now.AddDays(1) - startTime).TotalSeconds).ToString(); // 相差秒数 } private static string getCode() { Random rand = new Random(); string code = ""; for (int ctr = 0; ctr < 6; ctr++) { code += rand.Next(10).ToString(); } return code; } } public class VideoCalss { /// /// 室外机的UUID /// 例:JJY000007FSEYX /// public string ESVideoUUID = string.Empty; /// /// 当前用户的房间ID /// 例:0801 /// public int ESRoomID; /// /// 室外机的名称 /// 例:室外机 /// public string DeviceName = string.Empty; /// /// 房间命名 /// 例:8栋1单元0801 /// public string RoomName = string.Empty; } public class CloudsVideo { /// /// 栋楼单元号 /// public string FLBuildingID = string.Empty; /// /// 那栋楼的名称 /// public string FLBuildingName = string.Empty; /// /// 小区ID /// public string FLCommunityID = string.Empty; /// /// 房间ID /// public string FLRoomID = string.Empty; /// /// 住宅ID /// public string HomeID = string.Empty; public string FLSecretKey = string.Empty; /// /// 丰林可视对讲 UserKey /// public string UserKey = string.Empty; } }