| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202205061"> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202205161"> |
| | | <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="28" /> |
| | | <!--友盟--> |
| | | <!--<uses-sdk android:minSdkVersion="8"></uses-sdk>--> |
| | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public uint color = 0x00000000; |
| | | public string color = string.Empty; |
| | | /// <summary> |
| | | /// 描述 |
| | | /// </summary> |
| | |
| | | } |
| | | } |
| | | } |
| | | return _intervalValue; |
| | | if (_intervalValue.Count > 0) |
| | | return _intervalValue; |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", ""))) |
| | | { |
| | | return attrKey.unit; |
| | | if (string.IsNullOrEmpty(attrKey.unit)) |
| | | return attrKey.unit; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | foreach (var info in attrKey.configs) |
| | | { |
| | | _levelColorList.Add(info.color); |
| | | _levelColorList.Add(Convert.ToUInt32(info.color, 16)); |
| | | } |
| | | } |
| | | } |
| | | return _levelColorList; |
| | | if (_levelColorList.Count > 0) |
| | | return _levelColorList; |
| | | } |
| | | |
| | | string spk = function.spk; |
| | |
| | | } |
| | | } |
| | | } |
| | | return _levelTextList; |
| | | if (_levelTextList.Count > 0) |
| | | return _levelTextList; |
| | | } |
| | | |
| | | string spk = function.spk; |
| | |
| | | |
| | | #if DEBUG |
| | | |
| | | FunctionList.List.Functions.Add(new Function |
| | | { |
| | | name = "测试门锁", |
| | | spk = SPK.DoorLock, |
| | | sid = "12345", |
| | | attributes = new List<FunctionAttributes> { |
| | | new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" }, |
| | | new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" }, |
| | | new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" }, |
| | | new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" }, |
| | | new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" }, |
| | | new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" }, |
| | | } |
| | | }); |
| | | FunctionList.List.Functions.Add(new Function |
| | | { |
| | | name = "门锁1", |
| | | spk = SPK.DoorLock, |
| | | sid = "123", |
| | | attributes = new List<FunctionAttributes> { |
| | | new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" }, |
| | | new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" }, |
| | | new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" }, |
| | | new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" }, |
| | | new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" }, |
| | | new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" }, |
| | | } |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function |
| | | //{ |
| | | // name = "测试门锁", |
| | | // spk = SPK.DoorLock, |
| | | // sid = "12345", |
| | | // attributes = new List<FunctionAttributes> { |
| | | // new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" }, |
| | | // new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" }, |
| | | // new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" }, |
| | | // new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" }, |
| | | // new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" }, |
| | | // new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" }, |
| | | // } |
| | | //}); |
| | | //FunctionList.List.Functions.Add(new Function |
| | | //{ |
| | | // name = "门锁1", |
| | | // spk = SPK.DoorLock, |
| | | // sid = "123", |
| | | // attributes = new List<FunctionAttributes> { |
| | | // new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" }, |
| | | // new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" }, |
| | | // new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" }, |
| | | // new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" }, |
| | | // new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" }, |
| | | // new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" }, |
| | | // } |
| | | //}); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.PanelSocket, |
| | | name = "面板插座", |
| | | attributes = new List<FunctionAttributes> |
| | | { |
| | | new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | new FunctionAttributes(){ key = "on_off_usb",curValue= "on",state = "on" }, |
| | | new FunctionAttributes(){ key = "active_power",curValue= "220",state = "220" }, |
| | | new FunctionAttributes(){ key = "voltage",curValue= "5",state = "5" }, |
| | | new FunctionAttributes(){ key = "current",curValue= "110",state = "110" }, |
| | | new FunctionAttributes(){ key = "total_electricity",curValue= "123.33",state = "123.33" }, |
| | | } |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.PanelSocket, |
| | | // name = "面板插座", |
| | | // attributes = new List<FunctionAttributes> |
| | | // { |
| | | // new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | // new FunctionAttributes(){ key = "on_off_usb",curValue= "on",state = "on" }, |
| | | // new FunctionAttributes(){ key = "active_power",curValue= "220",state = "220" }, |
| | | // new FunctionAttributes(){ key = "voltage",curValue= "5",state = "5" }, |
| | | // new FunctionAttributes(){ key = "current",curValue= "110",state = "110" }, |
| | | // new FunctionAttributes(){ key = "total_electricity",curValue= "123.33",state = "123.33" }, |
| | | // } |
| | | //}); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.SensorDryContact, |
| | | name = "干接点", |
| | | attributes = new List<FunctionAttributes>() |
| | | { |
| | | new FunctionAttributes(){ key = "status",curValue= "on",state = "on" }, |
| | | }, |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.SensorDryContact, |
| | | // name = "干接点", |
| | | // attributes = new List<FunctionAttributes>() |
| | | // { |
| | | // new FunctionAttributes(){ key = "status",curValue= "on",state = "on" }, |
| | | // }, |
| | | //}); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | |
| | | type = "interval" , |
| | | unit = "ug/m²", |
| | | configs = new List<AttrKeyInfo>(){ |
| | | new AttrKeyInfo(){ start = "0",end = "75",color = 0xFFADE764, desc = "良好"}, |
| | | new AttrKeyInfo(){ start = "76",end = "150",color = 0xFFFFD154,desc = "轻/中度污染"}, |
| | | new AttrKeyInfo(){ start = "151",end = "500",color = 0xFFFF9D54,desc = "重度/严重污染"}, |
| | | new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"}, |
| | | new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"}, |
| | | new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "重度/严重污染"}, |
| | | } |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.SensorHelp, |
| | | name = "测试紧急求助按钮", |
| | | attributes = new List<FunctionAttributes>() |
| | | { |
| | | new FunctionAttributes(){ key = "status",curValue= "on",state = "on" }, |
| | | new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" }, |
| | | new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" }, |
| | | new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" }, |
| | | new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" }, |
| | | }, |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.SensorHelp, |
| | | // name = "测试紧急求助按钮", |
| | | // attributes = new List<FunctionAttributes>() |
| | | // { |
| | | // new FunctionAttributes(){ key = "status",curValue= "on",state = "on" }, |
| | | // new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" }, |
| | | // new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" }, |
| | | // new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" }, |
| | | // new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" }, |
| | | // }, |
| | | //}); |
| | | |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | |
| | | // }, |
| | | //}); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.AirFreshStandard, |
| | | name = "测试新风", |
| | | sid = "098765433242342342", |
| | | attributes = new List<FunctionAttributes>() |
| | | { |
| | | new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low" } }, |
| | | }, |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.AirFreshStandard, |
| | | // name = "测试新风", |
| | | // sid = "098765433242342342", |
| | | // attributes = new List<FunctionAttributes>() |
| | | // { |
| | | // new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | // new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low" } }, |
| | | // }, |
| | | //}); |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.PanelEnvironment, |
| | | name = "测试环境面板", |
| | | targetSids = new List<string> { |
| | | "098765433242342342", |
| | | "ac1", |
| | | "floorheat1" |
| | | } |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.PanelEnvironment, |
| | | // name = "测试环境面板", |
| | | // targetSids = new List<string> { |
| | | // "098765433242342342", |
| | | // "ac1", |
| | | // "floorheat1" |
| | | // } |
| | | //}); |
| | | |
| | | |
| | | FunctionList.List.Functions.Add(new Function() |
| | | { |
| | | spk = SPK.HvacCac, |
| | | name = "测试金茂温控", |
| | | attributes = new List<FunctionAttributes>() |
| | | { |
| | | new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | new FunctionAttributes(){ key = "mode",curValue= "cool",state = "cool" ,value = new List<string>(){ "cool", "heat" } }, |
| | | new FunctionAttributes(){ key = "set_temp",curValue= "22",state = "22" ,value = new List<string>(){},min = 0,max = 30 }, |
| | | //new FunctionAttributes(){ key = "set_temp_step",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low", "auto", "stop" } }, |
| | | new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | new FunctionAttributes(){ key = "room_temp",curValue= "26",state = "26" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | new FunctionAttributes(){ key = "dew_point_temp",curValue= "20",state = "20" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | new FunctionAttributes(){ key = "room_humidity",curValue= "20",state = "20" ,value = new List<string>(){ },min = 0,max = 1000 }, |
| | | //new FunctionAttributes(){ key = "tvoc",curValue= "20",state = "20" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | }, |
| | | }); |
| | | //FunctionList.List.Functions.Add(new Function() |
| | | //{ |
| | | // spk = SPK.HvacCac, |
| | | // name = "测试金茂温控", |
| | | // attributes = new List<FunctionAttributes>() |
| | | // { |
| | | // new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" }, |
| | | // new FunctionAttributes(){ key = "mode",curValue= "cool",state = "cool" ,value = new List<string>(){ "cool", "heat" } }, |
| | | // new FunctionAttributes(){ key = "set_temp",curValue= "22",state = "22" ,value = new List<string>(){},min = 0,max = 30 }, |
| | | // //new FunctionAttributes(){ key = "set_temp_step",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low", "auto", "stop" } }, |
| | | // new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | // new FunctionAttributes(){ key = "room_temp",curValue= "26",state = "26" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | // new FunctionAttributes(){ key = "dew_point_temp",curValue= "20",state = "20" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | // new FunctionAttributes(){ key = "room_humidity",curValue= "20",state = "20" ,value = new List<string>(){ },min = 0,max = 1000 }, |
| | | // //new FunctionAttributes(){ key = "tvoc",curValue= "20",state = "20" ,value = new List<string>(){ },min = 0,max = 100 }, |
| | | // }, |
| | | //}); |
| | | |
| | | |
| | | //FunctionList.List.Functions.Add(new Function() |
| | |
| | | }; |
| | | contentView.AddChidren(listView); |
| | | |
| | | if (ximoVideoList.Count == 1) |
| | | //if (ximoVideoList.Count == 1) |
| | | { |
| | | Loading loading = new Loading(); |
| | | contentView.AddChidren(loading); |
| | |
| | | ImageView codeImage = new ImageView() |
| | | { |
| | | Gravity = Gravity.Center, |
| | | Height = Application.GetRealWidth(200), |
| | | Width = Application.GetRealWidth(200), |
| | | Height = Application.GetRealWidth(320), |
| | | Width = Application.GetRealWidth(320), |
| | | ImageBytes = Scan.BytesFromText(pairs[0].qrcode, Application.GetRealWidth(200), Application.GetRealWidth(200)), |
| | | }; |
| | | contentView.AddChidren(codeImage); |
| | | dialogView.AddChidren(codeImage); |
| | | }); |
| | | } |
| | | } |
| | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | else |
| | | { |
| | | //else |
| | | //{ |
| | | |
| | | foreach (var v in ximoVideoList) |
| | | { |
| | | Button btnMsg = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Height = Application.GetRealHeight(50), |
| | | Width = Application.GetRealHeight(160), |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.TextualColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = v.deviceName, |
| | | Radius = (uint)Application.GetRealWidth(5), |
| | | BackgroundColor = CSS_Color.DividingLineColor, |
| | | IsMoreLines = true, |
| | | }; |
| | | listView.AddChidren(btnMsg); |
| | | // foreach (var v in ximoVideoList) |
| | | // { |
| | | // Button btnMsg = new Button() |
| | | // { |
| | | // Gravity = Gravity.CenterHorizontal, |
| | | // Height = Application.GetRealHeight(50), |
| | | // Width = Application.GetRealHeight(160), |
| | | // TextAlignment = TextAlignment.Center, |
| | | // TextColor = CSS_Color.TextualColor, |
| | | // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | // Text = v.deviceName, |
| | | // Radius = (uint)Application.GetRealWidth(5), |
| | | // BackgroundColor = CSS_Color.DividingLineColor, |
| | | // IsMoreLines = true, |
| | | // }; |
| | | // listView.AddChidren(btnMsg); |
| | | |
| | | listView.AddChidren(new Button() { Height = Application.GetRealHeight(12) }); |
| | | // listView.AddChidren(new Button() { Height = Application.GetRealHeight(12) }); |
| | | |
| | | btnMsg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | // btnMsg.MouseUpEventHandler = (sender, e) => |
| | | // { |
| | | |
| | | |
| | | if (v.spk == "door.gate") |
| | | { |
| | | Loading loading = new Loading(); |
| | | contentView.AddChidren(loading); |
| | | loading.Start(""); |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | var pack = VideoSend.GetQRcode(); |
| | | var pairs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AccessControlQRode>>(pack.Data.ToString()); |
| | | if (pairs.Count > 0) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | ImageView codeImage = new ImageView() |
| | | { |
| | | Gravity = Gravity.Center, |
| | | Height = Application.GetRealWidth(200), |
| | | Width = Application.GetRealWidth(200), |
| | | ImageBytes = Scan.BytesFromText(pairs[0].qrcode, Application.GetRealWidth(200), Application.GetRealWidth(200)), |
| | | }; |
| | | contentView.AddChidren(codeImage); |
| | | }); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"获取门禁二维码异常:{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (loading != null) |
| | | { |
| | | loading.Hide(); |
| | | loading.RemoveFromParent(); |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | return; |
| | | } |
| | | // if (v.spk == "door.gate") |
| | | // { |
| | | |
| | | // return; |
| | | // } |
| | | |
| | | //门禁二维码固定有的 |
| | | VideoSend.GetQRcode(this, v, (tag, paw) => |
| | | { |
| | | if (tag) |
| | | { |
| | | //注意:密码有可能延时1分钟生效 |
| | | View.ShowDialog showDialog = new View.ShowDialog(); |
| | | showDialog.QRcode(paw); |
| | | } |
| | | }); |
| | | dialog.Close(); |
| | | }; |
| | | } |
| | | } |
| | | // //门禁二维码固定有的 |
| | | // VideoSend.GetQRcode(this, v, (tag, paw) => |
| | | // { |
| | | // if (tag) |
| | | // { |
| | | // //注意:密码有可能延时1分钟生效 |
| | | // View.ShowDialog showDialog = new View.ShowDialog(); |
| | | // showDialog.QRcode(paw); |
| | | // } |
| | | // }); |
| | | // dialog.Close(); |
| | | // }; |
| | | // } |
| | | //} |
| | | dialog.Show(); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 选择徘徊报警列表显示 |
| | |
| | | |
| | | FrameLayout dialogContentView = new FrameLayout(); |
| | | dialog.AddChidren(dialogContentView); |
| | | dialogContentView.MouseUpEventHandler = (sender, e) => |
| | | dialogContentView.MouseUpEventHandler = (sender2, e2) => |
| | | { |
| | | dialog.Close(); |
| | | }; |