New file |
| | |
| | | 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<VideoCalss> 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 |
| | | }; |
| | | |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 判断账号是否支持可视对讲 |
| | | /// </summary> |
| | | /// <param name="topFrameLayout">可视对讲图标的父控件</param> |
| | | 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<VideoCalss> videoList= new List<VideoCalss>(); |
| | | if (stateCode == "Success") |
| | | {//判断这个账号是否绑定; |
| | | topFrameLayout.AddChidren(videoIntercomBtn); |
| | | CloudsVideo cloudsVideo = Newtonsoft.Json.JsonConvert.DeserializeObject<CloudsVideo>(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 { } |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 获取可视对讲列表 |
| | | /// </summary> |
| | | static async System.Threading.Tasks.Task<List<VideoCalss>> GetVideoInfoList(CloudsVideo clouds) |
| | | { |
| | | List<VideoCalss> eSVideoInfosList = new List<VideoCalss>(); |
| | | 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<List<Dictionary<string, string>>>(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 |
| | | { |
| | | /// <summary> |
| | | /// 室外机的UUID |
| | | /// 例:JJY000007FSEYX |
| | | /// </summary> |
| | | public string ESVideoUUID = string.Empty; |
| | | /// <summary> |
| | | /// 当前用户的房间ID |
| | | /// 例:0801 |
| | | /// </summary> |
| | | public int ESRoomID; |
| | | /// <summary> |
| | | /// 室外机的名称 |
| | | /// 例:室外机 |
| | | /// </summary> |
| | | public string DeviceName = string.Empty; |
| | | /// <summary> |
| | | /// 房间命名 |
| | | /// 例:8栋1单元0801 |
| | | /// </summary> |
| | | public string RoomName = string.Empty; |
| | | |
| | | } |
| | | public class CloudsVideo |
| | | { |
| | | /// <summary> |
| | | /// 栋楼单元号 |
| | | /// </summary> |
| | | public string FLBuildingID = string.Empty; |
| | | /// <summary> |
| | | /// 那栋楼的名称 |
| | | /// </summary> |
| | | public string FLBuildingName = string.Empty; |
| | | /// <summary> |
| | | /// 小区ID |
| | | /// </summary> |
| | | public string FLCommunityID = string.Empty; |
| | | /// <summary> |
| | | /// 房间ID |
| | | /// </summary> |
| | | public string FLRoomID = string.Empty; |
| | | /// <summary> |
| | | /// 住宅ID |
| | | /// </summary> |
| | | public string HomeID = string.Empty; |
| | | |
| | | public string FLSecretKey = string.Empty; |
| | | |
| | | } |
| | | } |