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 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(55), 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 }; } } /// /// 判断账号是否支持可视对讲 /// /// 可视对讲图标的父控件 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 (HdlUserCenterResourse.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(); 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); } return eSVideoInfosList; } } 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; } }