HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-05-13 2be70a32d2a8c517bd9868fb60913fcc843e66fe
上传代码
16个文件已添加
27个文件已修改
2197 ■■■■■ 已修改文件
ZigbeeApp/GateWay.Droid/Assets/Language.ini 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/AirQualitySensorEpoint.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/AirQualitySensorEpointSelected.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/AirQualitySensorEpointSelected2.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/SensorPMTwoPointFive.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/PM2.5Sensor/HumidityPic.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/PM2.5Sensor/PmPic.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/PM2.5Sensor/TemperaturePic.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPMTwoPointFive.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs 1172 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Home.IOS.csproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Language.ini 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Device/AirQualitySensorEpoint.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Device/AirQualitySensorEpointSelected.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Device/AirQualitySensorEpointSelected2.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Device/SensorPMTwoPointFive.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/PM2.5Sensor/HumidityPic.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/PM2.5Sensor/PmPic.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/PM2.5Sensor/TemperaturePic.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPMTwoPointFive.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/Device.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Category/AdjustTargetAddDeviceForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DevicePmSensorRowControl.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/LogicView/TipView.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/SkipView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs 225 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceFreshAirDetailCardForm.cs 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs 279 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/UnallocatedRoomForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirBackLightSettionForm.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/PMSensor.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/R.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Shared.projitems 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Language.ini
@@ -315,6 +315,8 @@
312= 背光灯颜色
313=长按图示按键5秒以上,信号图标{0}快闪, 进入配网状态。信号图标常亮则配网成功
314=自动模式不支持操作
315=空气质量
316=空气质量传感器
5097=取消
5098=确定
@@ -1994,6 +1996,7 @@
40016=灯光
40017=干接点
40018=新风
40019=空气质量
;★★★★下面这些是模块ID的设备默认备注名字,从50000开始.注:它并不需要再R.cs文件中定义★★★★
50000=紧急按钮
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/AirQualitySensorEpoint.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/AirQualitySensorEpointSelected.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/AirQualitySensorEpointSelected2.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Device/SensorPMTwoPointFive.png

ZigbeeApp/GateWay.Droid/Assets/Phone/PM2.5Sensor/HumidityPic.png
ZigbeeApp/GateWay.Droid/Assets/Phone/PM2.5Sensor/PmPic.png
ZigbeeApp/GateWay.Droid/Assets/Phone/PM2.5Sensor/TemperaturePic.png
ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPMTwoPointFive.png
ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
@@ -2140,6 +2140,27 @@
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\ZigeeLogic\nextIconSone.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Device\AirQualitySensorEpoint.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Device\AirQualitySensorEpointSelected.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Device\AirQualitySensorEpointSelected2.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\RealDevice\SensorPMTwoPointFive.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\PM2.5Sensor\HumidityPic.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\PM2.5Sensor\PmPic.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\PM2.5Sensor\TemperaturePic.png" />
  </ItemGroup>
  <Import Project="..\Shared\Shared.projitems" Label="Shared" Condition="Exists('..\Shared\Shared.projitems')" />
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
  <Import Project="..\packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets')" />
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
@@ -2979,665 +2979,698 @@
        public partial class Id
        {
            
            // aapt resource value: 0x7F09000E
            public const int action0 = 2131296270;
            // aapt resource value: 0x7F090020
            public const int actions = 2131296288;
            // aapt resource value: 0x7F09000F
            public const int action_bar = 2131296271;
            // aapt resource value: 0x7F090010
            public const int action_bar_activity_content = 2131296272;
            // aapt resource value: 0x7F090011
            public const int action_bar_container = 2131296273;
            // aapt resource value: 0x7F090012
            public const int action_bar_root = 2131296274;
            // aapt resource value: 0x7F090013
            public const int action_bar_spinner = 2131296275;
            // aapt resource value: 0x7F090014
            public const int action_bar_subtitle = 2131296276;
            // aapt resource value: 0x7F090015
            public const int action_bar_title = 2131296277;
            public const int action0 = 2131296277;
            // aapt resource value: 0x7F090027
            public const int actions = 2131296295;
            
            // aapt resource value: 0x7F090016
            public const int action_container = 2131296278;
            public const int action_bar = 2131296278;
            
            // aapt resource value: 0x7F090017
            public const int action_context_bar = 2131296279;
            public const int action_bar_activity_content = 2131296279;
            
            // aapt resource value: 0x7F090018
            public const int action_divider = 2131296280;
            public const int action_bar_container = 2131296280;
            
            // aapt resource value: 0x7F090019
            public const int action_image = 2131296281;
            public const int action_bar_root = 2131296281;
            
            // aapt resource value: 0x7F09001A
            public const int action_menu_divider = 2131296282;
            public const int action_bar_spinner = 2131296282;
            
            // aapt resource value: 0x7F09001B
            public const int action_menu_presenter = 2131296283;
            public const int action_bar_subtitle = 2131296283;
            
            // aapt resource value: 0x7F09001C
            public const int action_mode_bar = 2131296284;
            public const int action_bar_title = 2131296284;
            
            // aapt resource value: 0x7F09001D
            public const int action_mode_bar_stub = 2131296285;
            public const int action_container = 2131296285;
            
            // aapt resource value: 0x7F09001E
            public const int action_mode_close_button = 2131296286;
            public const int action_context_bar = 2131296286;
            
            // aapt resource value: 0x7F09001F
            public const int action_text = 2131296287;
            public const int action_divider = 2131296287;
            // aapt resource value: 0x7F090020
            public const int action_image = 2131296288;
            
            // aapt resource value: 0x7F090021
            public const int activity_chooser_view_content = 2131296289;
            public const int action_menu_divider = 2131296289;
            
            // aapt resource value: 0x7F090022
            public const int add = 2131296290;
            public const int action_menu_presenter = 2131296290;
            
            // aapt resource value: 0x7F090023
            public const int alertTitle = 2131296291;
            public const int action_mode_bar = 2131296291;
            
            // aapt resource value: 0x7F090024
            public const int all = 2131296292;
            public const int action_mode_bar_stub = 2131296292;
            // aapt resource value: 0x7F090025
            public const int action_mode_close_button = 2131296293;
            // aapt resource value: 0x7F090026
            public const int action_text = 2131296294;
            // aapt resource value: 0x7F090028
            public const int activity_chooser_view_content = 2131296296;
            // aapt resource value: 0x7F090029
            public const int add = 2131296297;
            // aapt resource value: 0x7F09002A
            public const int alertTitle = 2131296298;
            // aapt resource value: 0x7F09002B
            public const int all = 2131296299;
            
            // aapt resource value: 0x7F090000
            public const int ALT = 2131296256;
            
            // aapt resource value: 0x7F090025
            public const int always = 2131296293;
            // aapt resource value: 0x7F090026
            public const int async = 2131296294;
            // aapt resource value: 0x7F090027
            public const int auto = 2131296295;
            // aapt resource value: 0x7F090028
            public const int beginning = 2131296296;
            // aapt resource value: 0x7F090029
            public const int blocking = 2131296297;
            // aapt resource value: 0x7F09002A
            public const int bottom = 2131296298;
            // aapt resource value: 0x7F09002B
            public const int btnCancel = 2131296299;
            // aapt resource value: 0x7F09002C
            public const int btnSubmit = 2131296300;
            public const int always = 2131296300;
            
            // aapt resource value: 0x7F09002D
            public const int buttonPanel = 2131296301;
            public const int async = 2131296301;
            
            // aapt resource value: 0x7F09002E
            public const int cancel_action = 2131296302;
            public const int auto = 2131296302;
            
            // aapt resource value: 0x7F09002F
            public const int center = 2131296303;
            public const int beginning = 2131296303;
            
            // aapt resource value: 0x7F090030
            public const int center_horizontal = 2131296304;
            public const int blocking = 2131296304;
            
            // aapt resource value: 0x7F090031
            public const int center_vertical = 2131296305;
            public const int bottom = 2131296305;
            
            // aapt resource value: 0x7F090032
            public const int checkbox = 2131296306;
            public const int btnCancel = 2131296306;
            
            // aapt resource value: 0x7F090033
            public const int chronometer = 2131296307;
            public const int btnSubmit = 2131296307;
            
            // aapt resource value: 0x7F090034
            public const int clip_horizontal = 2131296308;
            public const int buttonPanel = 2131296308;
            
            // aapt resource value: 0x7F090035
            public const int clip_vertical = 2131296309;
            public const int cancel_action = 2131296309;
            
            // aapt resource value: 0x7F090036
            public const int collapseActionView = 2131296310;
            public const int center = 2131296310;
            
            // aapt resource value: 0x7F090037
            public const int container = 2131296311;
            public const int center_horizontal = 2131296311;
            
            // aapt resource value: 0x7F090038
            public const int contentFrame = 2131296312;
            public const int center_vertical = 2131296312;
            
            // aapt resource value: 0x7F090039
            public const int contentPanel = 2131296313;
            public const int checkbox = 2131296313;
            
            // aapt resource value: 0x7F09003A
            public const int content_container = 2131296314;
            public const int chronometer = 2131296314;
            
            // aapt resource value: 0x7F09003B
            public const int coordinator = 2131296315;
            public const int clip_horizontal = 2131296315;
            // aapt resource value: 0x7F09003C
            public const int clip_vertical = 2131296316;
            // aapt resource value: 0x7F09003D
            public const int collapseActionView = 2131296317;
            // aapt resource value: 0x7F09003E
            public const int container = 2131296318;
            // aapt resource value: 0x7F09003F
            public const int contentFrame = 2131296319;
            // aapt resource value: 0x7F090040
            public const int contentPanel = 2131296320;
            // aapt resource value: 0x7F090041
            public const int content_container = 2131296321;
            // aapt resource value: 0x7F090042
            public const int coordinator = 2131296322;
            
            // aapt resource value: 0x7F090001
            public const int CTRL = 2131296257;
            
            // aapt resource value: 0x7F09003C
            public const int custom = 2131296316;
            // aapt resource value: 0x7F09003D
            public const int customPanel = 2131296317;
            // aapt resource value: 0x7F09003E
            public const int day = 2131296318;
            // aapt resource value: 0x7F09003F
            public const int decor_content_parent = 2131296319;
            // aapt resource value: 0x7F090040
            public const int default_activity_button = 2131296320;
            // aapt resource value: 0x7F090041
            public const int description = 2131296321;
            // aapt resource value: 0x7F090042
            public const int design_bottom_sheet = 2131296322;
            // aapt resource value: 0x7F090002
            public const int Custom = 2131296258;
            
            // aapt resource value: 0x7F090043
            public const int design_menu_item_action_area = 2131296323;
            // aapt resource value: 0x7F090044
            public const int design_menu_item_action_area_stub = 2131296324;
            // aapt resource value: 0x7F090045
            public const int design_menu_item_text = 2131296325;
            // aapt resource value: 0x7F090046
            public const int design_navigation_view = 2131296326;
            // aapt resource value: 0x7F090047
            public const int disableHome = 2131296327;
            // aapt resource value: 0x7F090048
            public const int edit_query = 2131296328;
            // aapt resource value: 0x7F090049
            public const int end = 2131296329;
            // aapt resource value: 0x7F09004A
            public const int end_padder = 2131296330;
            // aapt resource value: 0x7F09004B
            public const int enterAlways = 2131296331;
            // aapt resource value: 0x7F09004C
            public const int enterAlwaysCollapsed = 2131296332;
            // aapt resource value: 0x7F09004D
            public const int exitUntilCollapsed = 2131296333;
            // aapt resource value: 0x7F09004F
            public const int expanded_menu = 2131296335;
            // aapt resource value: 0x7F09004E
            public const int expand_activities_button = 2131296334;
            // aapt resource value: 0x7F090050
            public const int fill = 2131296336;
            // aapt resource value: 0x7F090002
            public const int FILL = 2131296258;
            // aapt resource value: 0x7F090051
            public const int fill_horizontal = 2131296337;
            public const int custom = 2131296323;
            
            // aapt resource value: 0x7F090003
            public const int FILL_STROKE = 2131296259;
            public const int CustomLabel = 2131296259;
            // aapt resource value: 0x7F090044
            public const int customPanel = 2131296324;
            // aapt resource value: 0x7F090045
            public const int day = 2131296325;
            // aapt resource value: 0x7F090046
            public const int decor_content_parent = 2131296326;
            // aapt resource value: 0x7F090047
            public const int default_activity_button = 2131296327;
            // aapt resource value: 0x7F090048
            public const int description = 2131296328;
            // aapt resource value: 0x7F090049
            public const int design_bottom_sheet = 2131296329;
            // aapt resource value: 0x7F09004A
            public const int design_menu_item_action_area = 2131296330;
            // aapt resource value: 0x7F09004B
            public const int design_menu_item_action_area_stub = 2131296331;
            // aapt resource value: 0x7F09004C
            public const int design_menu_item_text = 2131296332;
            // aapt resource value: 0x7F09004D
            public const int design_navigation_view = 2131296333;
            // aapt resource value: 0x7F09004E
            public const int disableHome = 2131296334;
            // aapt resource value: 0x7F09004F
            public const int edit_query = 2131296335;
            // aapt resource value: 0x7F090050
            public const int end = 2131296336;
            // aapt resource value: 0x7F090051
            public const int end_padder = 2131296337;
            
            // aapt resource value: 0x7F090052
            public const int fill_vertical = 2131296338;
            public const int enterAlways = 2131296338;
            
            // aapt resource value: 0x7F090053
            public const int fingerprint_icon = 2131296339;
            public const int enterAlwaysCollapsed = 2131296339;
            
            // aapt resource value: 0x7F090054
            public const int @fixed = 2131296340;
            // aapt resource value: 0x7F090005
            public const int FixedBehind = 2131296261;
            // aapt resource value: 0x7F090006
            public const int FixedFront = 2131296262;
            // aapt resource value: 0x7F090055
            public const int forever = 2131296341;
            // aapt resource value: 0x7F090004
            public const int FUNCTION = 2131296260;
            public const int exitUntilCollapsed = 2131296340;
            
            // aapt resource value: 0x7F090056
            public const int gd_btn_back = 2131296342;
            public const int expanded_menu = 2131296342;
            // aapt resource value: 0x7F090055
            public const int expand_activities_button = 2131296341;
            
            // aapt resource value: 0x7F090057
            public const int gd_btn_myLocation = 2131296343;
            public const int fill = 2131296343;
            // aapt resource value: 0x7F090004
            public const int FILL = 2131296260;
            
            // aapt resource value: 0x7F090058
            public const int gd_btn_save = 2131296344;
            public const int fill_horizontal = 2131296344;
            // aapt resource value: 0x7F090005
            public const int FILL_STROKE = 2131296261;
            
            // aapt resource value: 0x7F090059
            public const int gd_img_search_delete = 2131296345;
            public const int fill_vertical = 2131296345;
            
            // aapt resource value: 0x7F09005A
            public const int gd_ll_myhome = 2131296346;
            public const int fingerprint_icon = 2131296346;
            
            // aapt resource value: 0x7F09005B
            public const int gd_ll_search = 2131296347;
            // aapt resource value: 0x7F09005C
            public const int gd_mapView = 2131296348;
            // aapt resource value: 0x7F09005D
            public const int gd_rl_topview = 2131296349;
            // aapt resource value: 0x7F09005E
            public const int gd_tv_activity_title = 2131296350;
            // aapt resource value: 0x7F09005F
            public const int gd_tv_radius = 2131296351;
            // aapt resource value: 0x7F090060
            public const int gd_tv_search_title = 2131296352;
            // aapt resource value: 0x7F090061
            public const int hdl_gallery_rootView = 2131296353;
            // aapt resource value: 0x7F090062
            public const int hdl_gallery_viewPager = 2131296354;
            // aapt resource value: 0x7F090063
            public const int hdl_options1 = 2131296355;
            // aapt resource value: 0x7F090064
            public const int hdl_options2 = 2131296356;
            // aapt resource value: 0x7F090065
            public const int hdl_options3 = 2131296357;
            // aapt resource value: 0x7F090066
            public const int hdl_pickerview_ll = 2131296358;
            // aapt resource value: 0x7F090067
            public const int home = 2131296359;
            // aapt resource value: 0x7F090068
            public const int homeAsUp = 2131296360;
            // aapt resource value: 0x7F090069
            public const int hour = 2131296361;
            // aapt resource value: 0x7F09006A
            public const int icon = 2131296362;
            // aapt resource value: 0x7F09006B
            public const int icon_group = 2131296363;
            // aapt resource value: 0x7F09006C
            public const int ifRoom = 2131296364;
            // aapt resource value: 0x7F09006D
            public const int image = 2131296365;
            // aapt resource value: 0x7F09006E
            public const int info = 2131296366;
            // aapt resource value: 0x7F09006F
            public const int italic = 2131296367;
            // aapt resource value: 0x7F090070
            public const int item_touch_helper_previous_elevation = 2131296368;
            // aapt resource value: 0x7F090071
            public const int largeLabel = 2131296369;
            // aapt resource value: 0x7F090072
            public const int left = 2131296370;
            // aapt resource value: 0x7F090073
            public const int line1 = 2131296371;
            // aapt resource value: 0x7F090074
            public const int line3 = 2131296372;
            // aapt resource value: 0x7F090075
            public const int listMode = 2131296373;
            // aapt resource value: 0x7F090076
            public const int list_item = 2131296374;
            // aapt resource value: 0x7F090077
            public const int masked = 2131296375;
            // aapt resource value: 0x7F090008
            public const int MatchLayout = 2131296264;
            // aapt resource value: 0x7F090078
            public const int media_actions = 2131296376;
            // aapt resource value: 0x7F090079
            public const int message = 2131296377;
            public const int @fixed = 2131296347;
            
            // aapt resource value: 0x7F090007
            public const int META = 2131296263;
            public const int FixedBehind = 2131296263;
            // aapt resource value: 0x7F090008
            public const int FixedFront = 2131296264;
            // aapt resource value: 0x7F09005C
            public const int forever = 2131296348;
            // aapt resource value: 0x7F090006
            public const int FUNCTION = 2131296262;
            // aapt resource value: 0x7F09005D
            public const int gd_btn_back = 2131296349;
            // aapt resource value: 0x7F09005E
            public const int gd_btn_myLocation = 2131296350;
            // aapt resource value: 0x7F09005F
            public const int gd_btn_save = 2131296351;
            // aapt resource value: 0x7F090060
            public const int gd_img_search_delete = 2131296352;
            // aapt resource value: 0x7F090061
            public const int gd_ll_myhome = 2131296353;
            // aapt resource value: 0x7F090062
            public const int gd_ll_search = 2131296354;
            // aapt resource value: 0x7F090063
            public const int gd_mapView = 2131296355;
            // aapt resource value: 0x7F090064
            public const int gd_rl_topview = 2131296356;
            // aapt resource value: 0x7F090065
            public const int gd_tv_activity_title = 2131296357;
            // aapt resource value: 0x7F090066
            public const int gd_tv_radius = 2131296358;
            // aapt resource value: 0x7F090067
            public const int gd_tv_search_title = 2131296359;
            // aapt resource value: 0x7F090068
            public const int hdl_gallery_rootView = 2131296360;
            // aapt resource value: 0x7F090069
            public const int hdl_gallery_viewPager = 2131296361;
            // aapt resource value: 0x7F09006A
            public const int hdl_options1 = 2131296362;
            // aapt resource value: 0x7F09006B
            public const int hdl_options2 = 2131296363;
            // aapt resource value: 0x7F09006C
            public const int hdl_options3 = 2131296364;
            // aapt resource value: 0x7F09006D
            public const int hdl_pickerview_ll = 2131296365;
            // aapt resource value: 0x7F09006E
            public const int home = 2131296366;
            // aapt resource value: 0x7F09006F
            public const int homeAsUp = 2131296367;
            // aapt resource value: 0x7F090070
            public const int hour = 2131296368;
            // aapt resource value: 0x7F090071
            public const int icon = 2131296369;
            // aapt resource value: 0x7F090072
            public const int icon_group = 2131296370;
            // aapt resource value: 0x7F090073
            public const int ifRoom = 2131296371;
            // aapt resource value: 0x7F090074
            public const int image = 2131296372;
            // aapt resource value: 0x7F090075
            public const int info = 2131296373;
            // aapt resource value: 0x7F090076
            public const int italic = 2131296374;
            // aapt resource value: 0x7F090077
            public const int item_touch_helper_previous_elevation = 2131296375;
            // aapt resource value: 0x7F090078
            public const int largeLabel = 2131296376;
            // aapt resource value: 0x7F090079
            public const int left = 2131296377;
            
            // aapt resource value: 0x7F09007A
            public const int middle = 2131296378;
            public const int line1 = 2131296378;
            
            // aapt resource value: 0x7F09007B
            public const int min = 2131296379;
            public const int line3 = 2131296379;
            
            // aapt resource value: 0x7F09007C
            public const int mini = 2131296380;
            public const int listMode = 2131296380;
            
            // aapt resource value: 0x7F09007D
            public const int month = 2131296381;
            public const int list_item = 2131296381;
            
            // aapt resource value: 0x7F09007E
            public const int multiply = 2131296382;
            // aapt resource value: 0x7F09007F
            public const int myButton = 2131296383;
            // aapt resource value: 0x7F090080
            public const int navigation_header_container = 2131296384;
            // aapt resource value: 0x7F090081
            public const int never = 2131296385;
            // aapt resource value: 0x7F090082
            public const int none = 2131296386;
            // aapt resource value: 0x7F090083
            public const int normal = 2131296387;
            // aapt resource value: 0x7F090084
            public const int notification_background = 2131296388;
            // aapt resource value: 0x7F090085
            public const int notification_main_column = 2131296389;
            // aapt resource value: 0x7F090086
            public const int notification_main_column_container = 2131296390;
            // aapt resource value: 0x7F090087
            public const int options1 = 2131296391;
            // aapt resource value: 0x7F090088
            public const int options2 = 2131296392;
            // aapt resource value: 0x7F090089
            public const int options3 = 2131296393;
            // aapt resource value: 0x7F09008A
            public const int optionspicker = 2131296394;
            // aapt resource value: 0x7F09008B
            public const int outmost_container = 2131296395;
            // aapt resource value: 0x7F09008C
            public const int parallax = 2131296396;
            // aapt resource value: 0x7F09008D
            public const int parentPanel = 2131296397;
            // aapt resource value: 0x7F09008E
            public const int pin = 2131296398;
            // aapt resource value: 0x7F09008F
            public const int progress_circular = 2131296399;
            // aapt resource value: 0x7F090090
            public const int progress_horizontal = 2131296400;
            // aapt resource value: 0x7F090091
            public const int radio = 2131296401;
            // aapt resource value: 0x7F090092
            public const int right = 2131296402;
            // aapt resource value: 0x7F090093
            public const int right_icon = 2131296403;
            // aapt resource value: 0x7F090094
            public const int right_side = 2131296404;
            // aapt resource value: 0x7F090095
            public const int rv_topbar = 2131296405;
            // aapt resource value: 0x7F09000C
            public const int Scale = 2131296268;
            // aapt resource value: 0x7F090096
            public const int screen = 2131296406;
            // aapt resource value: 0x7F090097
            public const int scroll = 2131296407;
            // aapt resource value: 0x7F09009B
            public const int scrollable = 2131296411;
            // aapt resource value: 0x7F090098
            public const int scrollIndicatorDown = 2131296408;
            // aapt resource value: 0x7F090099
            public const int scrollIndicatorUp = 2131296409;
            // aapt resource value: 0x7F09009A
            public const int scrollView = 2131296410;
            // aapt resource value: 0x7F09009C
            public const int search_badge = 2131296412;
            // aapt resource value: 0x7F09009D
            public const int search_bar = 2131296413;
            // aapt resource value: 0x7F09009E
            public const int search_button = 2131296414;
            // aapt resource value: 0x7F09009F
            public const int search_close_btn = 2131296415;
            // aapt resource value: 0x7F0900A0
            public const int search_edit_frame = 2131296416;
            // aapt resource value: 0x7F0900A1
            public const int search_go_btn = 2131296417;
            // aapt resource value: 0x7F0900A2
            public const int search_mag_icon = 2131296418;
            // aapt resource value: 0x7F0900A3
            public const int search_plate = 2131296419;
            // aapt resource value: 0x7F0900A4
            public const int search_src_text = 2131296420;
            // aapt resource value: 0x7F0900A5
            public const int search_voice_btn = 2131296421;
            // aapt resource value: 0x7F0900A6
            public const int second = 2131296422;
            // aapt resource value: 0x7F0900A7
            public const int select_dialog_listview = 2131296423;
            // aapt resource value: 0x7F090009
            public const int SHIFT = 2131296265;
            // aapt resource value: 0x7F0900A8
            public const int shortcut = 2131296424;
            // aapt resource value: 0x7F0900A9
            public const int showCustom = 2131296425;
            // aapt resource value: 0x7F0900AA
            public const int showHome = 2131296426;
            // aapt resource value: 0x7F0900AB
            public const int showTitle = 2131296427;
            // aapt resource value: 0x7F0900AC
            public const int smallLabel = 2131296428;
            // aapt resource value: 0x7F0900AD
            public const int snackbar_action = 2131296429;
            // aapt resource value: 0x7F0900AE
            public const int snackbar_text = 2131296430;
            // aapt resource value: 0x7F0900AF
            public const int snap = 2131296431;
            // aapt resource value: 0x7F0900B0
            public const int spacer = 2131296432;
            // aapt resource value: 0x7F0900B1
            public const int split_action_bar = 2131296433;
            // aapt resource value: 0x7F0900B2
            public const int src_atop = 2131296434;
            // aapt resource value: 0x7F0900B3
            public const int src_in = 2131296435;
            // aapt resource value: 0x7F0900B4
            public const int src_over = 2131296436;
            // aapt resource value: 0x7F0900B5
            public const int srl_classics_arrow = 2131296437;
            // aapt resource value: 0x7F0900B6
            public const int srl_classics_center = 2131296438;
            // aapt resource value: 0x7F0900B7
            public const int srl_classics_progress = 2131296439;
            // aapt resource value: 0x7F0900B8
            public const int srl_classics_title = 2131296440;
            // aapt resource value: 0x7F0900B9
            public const int srl_classics_update = 2131296441;
            // aapt resource value: 0x7F0900BA
            public const int start = 2131296442;
            // aapt resource value: 0x7F0900BB
            public const int status = 2131296443;
            // aapt resource value: 0x7F0900BC
            public const int status_bar_latest_event_content = 2131296444;
            public const int masked = 2131296382;
            
            // aapt resource value: 0x7F09000A
            public const int STROKE = 2131296266;
            public const int MatchLayout = 2131296266;
            
            // aapt resource value: 0x7F0900BD
            public const int submenuarrow = 2131296445;
            // aapt resource value: 0x7F09007F
            public const int media_actions = 2131296383;
            
            // aapt resource value: 0x7F0900BE
            public const int submit_area = 2131296446;
            // aapt resource value: 0x7F090080
            public const int message = 2131296384;
            
            // aapt resource value: 0x7F0900BF
            public const int subtitle = 2131296447;
            // aapt resource value: 0x7F090009
            public const int META = 2131296265;
            // aapt resource value: 0x7F090081
            public const int middle = 2131296385;
            // aapt resource value: 0x7F090082
            public const int min = 2131296386;
            // aapt resource value: 0x7F090083
            public const int mini = 2131296387;
            // aapt resource value: 0x7F090084
            public const int month = 2131296388;
            // aapt resource value: 0x7F090085
            public const int multiply = 2131296389;
            // aapt resource value: 0x7F090086
            public const int myButton = 2131296390;
            // aapt resource value: 0x7F090087
            public const int navigation_header_container = 2131296391;
            // aapt resource value: 0x7F090088
            public const int never = 2131296392;
            // aapt resource value: 0x7F090089
            public const int none = 2131296393;
            // aapt resource value: 0x7F09008A
            public const int normal = 2131296394;
            
            // aapt resource value: 0x7F09000B
            public const int SYM = 2131296267;
            public const int Notice = 2131296267;
            
            // aapt resource value: 0x7F0900C0
            public const int tabMode = 2131296448;
            // aapt resource value: 0x7F09008B
            public const int notification_background = 2131296395;
            
            // aapt resource value: 0x7F0900C1
            public const int text = 2131296449;
            // aapt resource value: 0x7F09008C
            public const int notification_main_column = 2131296396;
            
            // aapt resource value: 0x7F0900C2
            public const int text2 = 2131296450;
            // aapt resource value: 0x7F09008D
            public const int notification_main_column_container = 2131296397;
            
            // aapt resource value: 0x7F0900C6
            public const int textinput_counter = 2131296454;
            // aapt resource value: 0x7F09008E
            public const int options1 = 2131296398;
            
            // aapt resource value: 0x7F0900C7
            public const int textinput_error = 2131296455;
            // aapt resource value: 0x7F09008F
            public const int options2 = 2131296399;
            
            // aapt resource value: 0x7F0900C3
            public const int textSpacerNoButtons = 2131296451;
            // aapt resource value: 0x7F090090
            public const int options3 = 2131296400;
            
            // aapt resource value: 0x7F0900C4
            public const int textSpacerNoTitle = 2131296452;
            // aapt resource value: 0x7F090091
            public const int optionspicker = 2131296401;
            
            // aapt resource value: 0x7F0900C5
            public const int text_input_password_toggle = 2131296453;
            // aapt resource value: 0x7F090092
            public const int outmost_container = 2131296402;
            
            // aapt resource value: 0x7F0900C8
            public const int time = 2131296456;
            // aapt resource value: 0x7F090093
            public const int parallax = 2131296403;
            
            // aapt resource value: 0x7F0900C9
            public const int timepicker = 2131296457;
            // aapt resource value: 0x7F090094
            public const int parentPanel = 2131296404;
            
            // aapt resource value: 0x7F0900CA
            public const int title = 2131296458;
            // aapt resource value: 0x7F0900CB
            public const int titleDividerNoCustom = 2131296459;
            // aapt resource value: 0x7F0900CC
            public const int title_template = 2131296460;
            // aapt resource value: 0x7F0900CD
            public const int top = 2131296461;
            // aapt resource value: 0x7F0900CE
            public const int topPanel = 2131296462;
            // aapt resource value: 0x7F0900CF
            public const int touch_outside = 2131296463;
            // aapt resource value: 0x7F09000C
            public const int Password = 2131296268;
            
            // aapt resource value: 0x7F09000D
            public const int Translate = 2131296269;
            public const int PasswordLabel = 2131296269;
            
            // aapt resource value: 0x7F0900D0
            public const int tvTitle = 2131296464;
            // aapt resource value: 0x7F090095
            public const int pin = 2131296405;
            // aapt resource value: 0x7F090096
            public const int progress_circular = 2131296406;
            // aapt resource value: 0x7F090097
            public const int progress_horizontal = 2131296407;
            // aapt resource value: 0x7F090098
            public const int radio = 2131296408;
            // aapt resource value: 0x7F090099
            public const int right = 2131296409;
            // aapt resource value: 0x7F09009A
            public const int right_icon = 2131296410;
            // aapt resource value: 0x7F09009B
            public const int right_side = 2131296411;
            // aapt resource value: 0x7F09009C
            public const int rv_topbar = 2131296412;
            // aapt resource value: 0x7F090013
            public const int Scale = 2131296275;
            // aapt resource value: 0x7F09009D
            public const int screen = 2131296413;
            // aapt resource value: 0x7F09009E
            public const int scroll = 2131296414;
            // aapt resource value: 0x7F0900A2
            public const int scrollable = 2131296418;
            // aapt resource value: 0x7F09009F
            public const int scrollIndicatorDown = 2131296415;
            // aapt resource value: 0x7F0900A0
            public const int scrollIndicatorUp = 2131296416;
            // aapt resource value: 0x7F0900A1
            public const int scrollView = 2131296417;
            // aapt resource value: 0x7F0900A3
            public const int search_badge = 2131296419;
            // aapt resource value: 0x7F0900A4
            public const int search_bar = 2131296420;
            // aapt resource value: 0x7F0900A5
            public const int search_button = 2131296421;
            // aapt resource value: 0x7F0900A6
            public const int search_close_btn = 2131296422;
            // aapt resource value: 0x7F0900A7
            public const int search_edit_frame = 2131296423;
            // aapt resource value: 0x7F0900A8
            public const int search_go_btn = 2131296424;
            // aapt resource value: 0x7F0900A9
            public const int search_mag_icon = 2131296425;
            // aapt resource value: 0x7F0900AA
            public const int search_plate = 2131296426;
            // aapt resource value: 0x7F0900AB
            public const int search_src_text = 2131296427;
            // aapt resource value: 0x7F0900AC
            public const int search_voice_btn = 2131296428;
            // aapt resource value: 0x7F0900AD
            public const int second = 2131296429;
            // aapt resource value: 0x7F0900AE
            public const int select_dialog_listview = 2131296430;
            // aapt resource value: 0x7F09000E
            public const int SHIFT = 2131296270;
            // aapt resource value: 0x7F0900AF
            public const int shortcut = 2131296431;
            // aapt resource value: 0x7F0900B0
            public const int showCustom = 2131296432;
            // aapt resource value: 0x7F0900B1
            public const int showHome = 2131296433;
            // aapt resource value: 0x7F0900B2
            public const int showTitle = 2131296434;
            // aapt resource value: 0x7F0900B3
            public const int smallLabel = 2131296435;
            // aapt resource value: 0x7F0900B4
            public const int snackbar_action = 2131296436;
            // aapt resource value: 0x7F0900B5
            public const int snackbar_text = 2131296437;
            // aapt resource value: 0x7F0900B6
            public const int snap = 2131296438;
            // aapt resource value: 0x7F0900B7
            public const int spacer = 2131296439;
            // aapt resource value: 0x7F0900B8
            public const int split_action_bar = 2131296440;
            // aapt resource value: 0x7F0900B9
            public const int src_atop = 2131296441;
            // aapt resource value: 0x7F0900BA
            public const int src_in = 2131296442;
            // aapt resource value: 0x7F0900BB
            public const int src_over = 2131296443;
            // aapt resource value: 0x7F0900BC
            public const int srl_classics_arrow = 2131296444;
            // aapt resource value: 0x7F0900BD
            public const int srl_classics_center = 2131296445;
            // aapt resource value: 0x7F0900BE
            public const int srl_classics_progress = 2131296446;
            // aapt resource value: 0x7F0900BF
            public const int srl_classics_title = 2131296447;
            // aapt resource value: 0x7F0900C0
            public const int srl_classics_update = 2131296448;
            // aapt resource value: 0x7F09000F
            public const int SSID = 2131296271;
            // aapt resource value: 0x7F090010
            public const int SSIDLabel = 2131296272;
            // aapt resource value: 0x7F0900C1
            public const int start = 2131296449;
            // aapt resource value: 0x7F0900C2
            public const int startV1 = 2131296450;
            // aapt resource value: 0x7F0900C3
            public const int startV1V4 = 2131296451;
            // aapt resource value: 0x7F0900C4
            public const int startV4 = 2131296452;
            // aapt resource value: 0x7F0900C5
            public const int status = 2131296453;
            // aapt resource value: 0x7F0900C6
            public const int status_bar_latest_event_content = 2131296454;
            // aapt resource value: 0x7F0900C7
            public const int stop = 2131296455;
            // aapt resource value: 0x7F090011
            public const int STROKE = 2131296273;
            // aapt resource value: 0x7F0900C8
            public const int submenuarrow = 2131296456;
            // aapt resource value: 0x7F0900C9
            public const int submit_area = 2131296457;
            // aapt resource value: 0x7F0900CA
            public const int subtitle = 2131296458;
            // aapt resource value: 0x7F090012
            public const int SYM = 2131296274;
            // aapt resource value: 0x7F0900CB
            public const int tabMode = 2131296459;
            // aapt resource value: 0x7F0900CC
            public const int text = 2131296460;
            // aapt resource value: 0x7F0900CD
            public const int text2 = 2131296461;
            
            // aapt resource value: 0x7F0900D1
            public const int tv_zxing_back = 2131296465;
            public const int textinput_counter = 2131296465;
            
            // aapt resource value: 0x7F0900D2
            public const int tv_zxing_flash = 2131296466;
            public const int textinput_error = 2131296466;
            // aapt resource value: 0x7F0900CE
            public const int textSpacerNoButtons = 2131296462;
            // aapt resource value: 0x7F0900CF
            public const int textSpacerNoTitle = 2131296463;
            // aapt resource value: 0x7F0900D0
            public const int text_input_password_toggle = 2131296464;
            
            // aapt resource value: 0x7F0900D3
            public const int tv_zxing_scan = 2131296467;
            public const int time = 2131296467;
            
            // aapt resource value: 0x7F0900D4
            public const int uniform = 2131296468;
            public const int timepicker = 2131296468;
            
            // aapt resource value: 0x7F0900D5
            public const int up = 2131296469;
            public const int title = 2131296469;
            
            // aapt resource value: 0x7F0900D6
            public const int useLogo = 2131296470;
            public const int titleDividerNoCustom = 2131296470;
            
            // aapt resource value: 0x7F0900D7
            public const int view_offset_helper = 2131296471;
            public const int title_template = 2131296471;
            
            // aapt resource value: 0x7F0900D8
            public const int visible = 2131296472;
            public const int top = 2131296472;
            
            // aapt resource value: 0x7F0900D9
            public const int withText = 2131296473;
            public const int topPanel = 2131296473;
            
            // aapt resource value: 0x7F0900DA
            public const int wrap_content = 2131296474;
            public const int touch_outside = 2131296474;
            // aapt resource value: 0x7F090014
            public const int Translate = 2131296276;
            
            // aapt resource value: 0x7F0900DB
            public const int year = 2131296475;
            public const int tvTitle = 2131296475;
            // aapt resource value: 0x7F0900DC
            public const int tv_zxing_back = 2131296476;
            // aapt resource value: 0x7F0900DD
            public const int tv_zxing_flash = 2131296477;
            // aapt resource value: 0x7F0900DE
            public const int tv_zxing_scan = 2131296478;
            // aapt resource value: 0x7F0900DF
            public const int uniform = 2131296479;
            // aapt resource value: 0x7F0900E0
            public const int up = 2131296480;
            // aapt resource value: 0x7F0900E1
            public const int useLogo = 2131296481;
            // aapt resource value: 0x7F0900E2
            public const int view_offset_helper = 2131296482;
            // aapt resource value: 0x7F0900E3
            public const int visible = 2131296483;
            // aapt resource value: 0x7F0900E4
            public const int withText = 2131296484;
            // aapt resource value: 0x7F0900E5
            public const int wrap_content = 2131296485;
            // aapt resource value: 0x7F0900E6
            public const int year = 2131296486;
            
            static Id()
            {
@@ -3780,154 +3813,157 @@
            public const int abc_select_dialog_material = 2131427354;
            
            // aapt resource value: 0x7F0B001B
            public const int biometric_prompt_dialog_content = 2131427355;
            public const int activity_elian = 2131427355;
            
            // aapt resource value: 0x7F0B001C
            public const int design_bottom_navigation_item = 2131427356;
            public const int biometric_prompt_dialog_content = 2131427356;
            
            // aapt resource value: 0x7F0B001D
            public const int design_bottom_sheet_dialog = 2131427357;
            public const int design_bottom_navigation_item = 2131427357;
            
            // aapt resource value: 0x7F0B001E
            public const int design_layout_snackbar = 2131427358;
            public const int design_bottom_sheet_dialog = 2131427358;
            
            // aapt resource value: 0x7F0B001F
            public const int design_layout_snackbar_include = 2131427359;
            public const int design_layout_snackbar = 2131427359;
            
            // aapt resource value: 0x7F0B0020
            public const int design_layout_tab_icon = 2131427360;
            public const int design_layout_snackbar_include = 2131427360;
            
            // aapt resource value: 0x7F0B0021
            public const int design_layout_tab_text = 2131427361;
            public const int design_layout_tab_icon = 2131427361;
            
            // aapt resource value: 0x7F0B0022
            public const int design_menu_item_action_area = 2131427362;
            public const int design_layout_tab_text = 2131427362;
            
            // aapt resource value: 0x7F0B0023
            public const int design_navigation_item = 2131427363;
            public const int design_menu_item_action_area = 2131427363;
            
            // aapt resource value: 0x7F0B0024
            public const int design_navigation_item_header = 2131427364;
            public const int design_navigation_item = 2131427364;
            
            // aapt resource value: 0x7F0B0025
            public const int design_navigation_item_separator = 2131427365;
            public const int design_navigation_item_header = 2131427365;
            
            // aapt resource value: 0x7F0B0026
            public const int design_navigation_item_subheader = 2131427366;
            public const int design_navigation_item_separator = 2131427366;
            
            // aapt resource value: 0x7F0B0027
            public const int design_navigation_menu = 2131427367;
            public const int design_navigation_item_subheader = 2131427367;
            
            // aapt resource value: 0x7F0B0028
            public const int design_navigation_menu_item = 2131427368;
            public const int design_navigation_menu = 2131427368;
            
            // aapt resource value: 0x7F0B0029
            public const int design_text_input_password_icon = 2131427369;
            public const int design_navigation_menu_item = 2131427369;
            
            // aapt resource value: 0x7F0B002A
            public const int hdl_gallery_banner_view_layout = 2131427370;
            public const int design_text_input_password_icon = 2131427370;
            
            // aapt resource value: 0x7F0B002B
            public const int hdl_widget_activity_crop_image = 2131427371;
            public const int hdl_gallery_banner_view_layout = 2131427371;
            
            // aapt resource value: 0x7F0B002C
            public const int hdl_widget_activity_geofence_round = 2131427372;
            public const int hdl_widget_activity_crop_image = 2131427372;
            
            // aapt resource value: 0x7F0B002D
            public const int hdl_widget_air_button = 2131427373;
            public const int hdl_widget_activity_geofence_round = 2131427373;
            
            // aapt resource value: 0x7F0B002E
            public const int hdl_widget_include_pickerview_topbar = 2131427374;
            public const int hdl_widget_air_button = 2131427374;
            
            // aapt resource value: 0x7F0B002F
            public const int hdl_widget_layout_basepickerview = 2131427375;
            public const int hdl_widget_include_pickerview_topbar = 2131427375;
            
            // aapt resource value: 0x7F0B0030
            public const int hdl_widget_pickerview = 2131427376;
            public const int hdl_widget_layout_basepickerview = 2131427376;
            
            // aapt resource value: 0x7F0B0031
            public const int hdl_widget_pickerview_options = 2131427377;
            public const int hdl_widget_pickerview = 2131427377;
            
            // aapt resource value: 0x7F0B0032
            public const int hdl_widget_pickerview_time = 2131427378;
            public const int hdl_widget_pickerview_options = 2131427378;
            
            // aapt resource value: 0x7F0B0033
            public const int Main = 2131427379;
            public const int hdl_widget_pickerview_time = 2131427379;
            
            // aapt resource value: 0x7F0B0034
            public const int notification_action = 2131427380;
            public const int Main = 2131427380;
            
            // aapt resource value: 0x7F0B0035
            public const int notification_action_tombstone = 2131427381;
            public const int notification_action = 2131427381;
            
            // aapt resource value: 0x7F0B0036
            public const int notification_media_action = 2131427382;
            public const int notification_action_tombstone = 2131427382;
            
            // aapt resource value: 0x7F0B0037
            public const int notification_media_cancel_action = 2131427383;
            public const int notification_media_action = 2131427383;
            
            // aapt resource value: 0x7F0B0038
            public const int notification_template_big_media = 2131427384;
            public const int notification_media_cancel_action = 2131427384;
            
            // aapt resource value: 0x7F0B0039
            public const int notification_template_big_media_custom = 2131427385;
            public const int notification_template_big_media = 2131427385;
            
            // aapt resource value: 0x7F0B003A
            public const int notification_template_big_media_narrow = 2131427386;
            public const int notification_template_big_media_custom = 2131427386;
            
            // aapt resource value: 0x7F0B003B
            public const int notification_template_big_media_narrow_custom = 2131427387;
            public const int notification_template_big_media_narrow = 2131427387;
            
            // aapt resource value: 0x7F0B003C
            public const int notification_template_custom_big = 2131427388;
            public const int notification_template_big_media_narrow_custom = 2131427388;
            
            // aapt resource value: 0x7F0B003D
            public const int notification_template_icon_group = 2131427389;
            public const int notification_template_custom_big = 2131427389;
            
            // aapt resource value: 0x7F0B003E
            public const int notification_template_lines_media = 2131427390;
            public const int notification_template_icon_group = 2131427390;
            
            // aapt resource value: 0x7F0B003F
            public const int notification_template_media = 2131427391;
            public const int notification_template_lines_media = 2131427391;
            
            // aapt resource value: 0x7F0B0040
            public const int notification_template_media_custom = 2131427392;
            public const int notification_template_media = 2131427392;
            
            // aapt resource value: 0x7F0B0041
            public const int notification_template_part_chronometer = 2131427393;
            public const int notification_template_media_custom = 2131427393;
            
            // aapt resource value: 0x7F0B0042
            public const int notification_template_part_time = 2131427394;
            public const int notification_template_part_chronometer = 2131427394;
            
            // aapt resource value: 0x7F0B0043
            public const int select_dialog_item_material = 2131427395;
            public const int notification_template_part_time = 2131427395;
            
            // aapt resource value: 0x7F0B0044
            public const int select_dialog_multichoice_material = 2131427396;
            public const int select_dialog_item_material = 2131427396;
            
            // aapt resource value: 0x7F0B0045
            public const int select_dialog_singlechoice_material = 2131427397;
            public const int select_dialog_multichoice_material = 2131427397;
            
            // aapt resource value: 0x7F0B0046
            public const int srl_classics_footer = 2131427398;
            public const int select_dialog_singlechoice_material = 2131427398;
            
            // aapt resource value: 0x7F0B0047
            public const int srl_classics_header = 2131427399;
            public const int srl_classics_footer = 2131427399;
            
            // aapt resource value: 0x7F0B0048
            public const int support_simple_spinner_dropdown_item = 2131427400;
            public const int srl_classics_header = 2131427400;
            
            // aapt resource value: 0x7F0B0049
            public const int tooltip = 2131427401;
            // aapt resource value: 0x7F0B004B
            public const int zxingscanneractivitylayout = 2131427403;
            // aapt resource value: 0x7F0B004C
            public const int zxingscannerfragmentlayout = 2131427404;
            public const int support_simple_spinner_dropdown_item = 2131427401;
            
            // aapt resource value: 0x7F0B004A
            public const int zxing_layout = 2131427402;
            public const int tooltip = 2131427402;
            // aapt resource value: 0x7F0B004C
            public const int zxingscanneractivitylayout = 2131427404;
            // aapt resource value: 0x7F0B004D
            public const int zxingscannerfragmentlayout = 2131427405;
            // aapt resource value: 0x7F0B004B
            public const int zxing_layout = 2131427403;
            
            static Layout()
            {
ZigbeeApp/Home.Ios/Home.IOS.csproj
@@ -593,6 +593,9 @@
      <BundleResource Include="Resources\Phone\Item\SelectHouse.png" />
      <BundleResource Include="Resources\Phone\Item\ScanQRcodeIconSelected.png" />
      <BundleResource Include="Resources\Phone\Item\InputAccountIconSelected.png" />
      <BundleResource Include="Resources\Phone\PM2.5Sensor\PmPic.png" />
      <BundleResource Include="Resources\Phone\PM2.5Sensor\TemperaturePic.png" />
      <BundleResource Include="Resources\Phone\PM2.5Sensor\HumidityPic.png" />
      <BundleResource Include="Resources\Phone\ZigeeLogic\deviceselectedbackgroundcolor.png" />
      <BundleResource Include="Resources\Phone\ZigeeLogic\add.png" />
      <BundleResource Include="Resources\Phone\ZigeeLogic\sensor0.png" />
@@ -704,6 +707,7 @@
      <BundleResource Include="Resources\Phone\Device\IntelligentLocksH06CSelected.png" />
      <BundleResource Include="Resources\Phone\Device\CurtainSelected2.png" />
      <BundleResource Include="Resources\Phone\Device\Relay.png" />
      <BundleResource Include="Resources\Phone\Device\AirQualitySensorEpoint.png" />
      <BundleResource Include="Resources\Phone\Device\SensorWaterSelected.png" />
      <BundleResource Include="Resources\Phone\Device\SensorInfrared.png" />
      <BundleResource Include="Resources\Phone\Device\ButtonPanelFangyueFreshAir.png" />
@@ -742,6 +746,7 @@
      <BundleResource Include="Resources\Phone\Device\AirSwitchSelected2.png" />
      <BundleResource Include="Resources\Phone\Device\ConverterSelected2.png" />
      <BundleResource Include="Resources\Phone\Device\AirSwitchSelected.png" />
      <BundleResource Include="Resources\Phone\Device\AirQualitySensorEpointSelected.png" />
      <BundleResource Include="Resources\Phone\Device\IntelligentLocksSelected.png" />
      <BundleResource Include="Resources\Phone\Device\RelaySelected.png" />
      <BundleResource Include="Resources\Phone\Device\Socket1Selected.png" />
@@ -770,6 +775,7 @@
      <BundleResource Include="Resources\Phone\Device\SensorFireSelected.png" />
      <BundleResource Include="Resources\Phone\Device\ColorLight.png" />
      <BundleResource Include="Resources\Phone\Device\AirConditionerZbGatewaySelected.png" />
      <BundleResource Include="Resources\Phone\Device\AirQualitySensorEpointSelected2.png" />
      <BundleResource Include="Resources\Phone\Device\Switch.png" />
      <BundleResource Include="Resources\Phone\Device\AirConditionerSelected.png" />
      <BundleResource Include="Resources\Phone\Device\ButtonPanel.png" />
@@ -1005,6 +1011,7 @@
      <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelFangyueEight.png" />
      <BundleResource Include="Resources\Phone\RealDevice\SensorFire.png" />
      <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelThree.png" />
      <BundleResource Include="Resources\Phone\RealDevice\SensorPMTwoPointFive.png" />
      <BundleResource Include="Resources\Phone\RealDevice\SensorCarbonMonoxide.png" />
      <BundleResource Include="Resources\Phone\RealDevice\DimmableLightOneLoad.png" />
      <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelFangyueTwo.png" />
ZigbeeApp/Home.Ios/Resources/Language.ini
@@ -315,6 +315,8 @@
312= 背光灯颜色
313=长按图示按键5秒以上,信号图标{0}快闪, 进入配网状态。信号图标常亮则配网成功
314=自动模式不支持操作
315=空气质量
316=空气质量传感器
5097=取消
5098=确定
@@ -1994,6 +1996,7 @@
40016=灯光
40017=干接点
40018=新风
40019=空气质量
;★★★★下面这些是模块ID的设备默认备注名字,从50000开始.注:它并不需要再R.cs文件中定义★★★★
50000=紧急按钮
ZigbeeApp/Home.Ios/Resources/Phone/Device/AirQualitySensorEpoint.png
ZigbeeApp/Home.Ios/Resources/Phone/Device/AirQualitySensorEpointSelected.png
ZigbeeApp/Home.Ios/Resources/Phone/Device/AirQualitySensorEpointSelected2.png
ZigbeeApp/Home.Ios/Resources/Phone/Device/SensorPMTwoPointFive.png

ZigbeeApp/Home.Ios/Resources/Phone/PM2.5Sensor/HumidityPic.png
ZigbeeApp/Home.Ios/Resources/Phone/PM2.5Sensor/PmPic.png
ZigbeeApp/Home.Ios/Resources/Phone/PM2.5Sensor/TemperaturePic.png
ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPMTwoPointFive.png
ZigbeeApp/Shared/Common/Device.cs
@@ -1331,7 +1331,7 @@
        }
        /// <summary>
        /// 设置【设备类型】的图标到指定的控件
        /// 设置【设备类型】的图标到指定的控件(此方法不能用在设备功能类型菜单的图标)
        /// </summary>
        /// <param name="btnIcon">控件对象</param>
        /// <param name="listdevice">设备对象</param>
@@ -1353,7 +1353,7 @@
        }
        /// <summary>
        /// 获取【设备类型】的图标
        /// 获取【设备类型】的图标(此方法不能用在设备功能类型菜单的图标)
        /// </summary>
        /// <param name="listdevice">设备对象</param>
        /// <param name="unSelectPath">图片地址</param>
@@ -1369,13 +1369,42 @@
        }
        /// <summary>
        /// 获取【设备类型】的图标
        /// 获取【设备功能类型】的菜单图标
        /// </summary>
        /// <param name="specificType">自定义设备类型</param>
        /// <param name="unSelectPath">图片地址</param>
        /// <param name="selectPath">图片地址</param>
        /// <returns></returns>
        public void GetDeviceObjectIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath)
        public void GetDeviceFunctionTypeMenuIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath)
        {
            //新风小模块
            if (specificType == DeviceConcreteType.Relay_FangyueFreshAirModul)
            {
                unSelectPath = "Device/FreshAirEpoint.png";
                selectPath = "Device/FreshAirEpointSelected.png";
                return;
            }
            //PM2.5空气质量传感器
            else if (specificType == DeviceConcreteType.Sensor_PMTwoPointFive)
            {
                unSelectPath = "Device/AirQualitySensorEpoint.png";
                selectPath = "Device/AirQualitySensorEpointSelected.png";
                return;
            }
            //上面需要特殊处理
            //获取【设备类型】的图标
            this.GetDeviceObjectIcon(specificType, ref unSelectPath, ref selectPath);
        }
        /// <summary>
        /// 获取【设备类型】的图标 2020.05.13:次函数不再公开
        /// </summary>
        /// <param name="specificType">自定义设备类型</param>
        /// <param name="unSelectPath">图片地址</param>
        /// <param name="selectPath">图片地址</param>
        /// <returns></returns>
        private void GetDeviceObjectIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath)
        {
            //将具体类型转字符串
            string strSpecific = Enum.GetName(typeof(DeviceConcreteType), specificType);
@@ -1412,6 +1441,7 @@
            unSelectPath = imageFilePath;
            selectPath = imageSelectFilePath;
        }
        #endregion
@@ -1817,6 +1847,14 @@
                info.BeloneType = DeviceBeloneType.A新风;
                info.ConcreteType = DeviceConcreteType.Relay_FangyueFreshAirModul;
                info.ObjectTypeNameId = 60011;//新风
            }
            //15 PM2.5传感器设备
            else if (dicType.ContainsKey(DeviceType.PMSensor) == true)
            {
                info.ConcreteTextId = R.MyInternationalizationString.uDeviceModelId1307;
                info.BeloneType = DeviceBeloneType.APM2点5空气质量传感器;
                info.ConcreteType = DeviceConcreteType.Sensor_PMTwoPointFive;
                info.ObjectTypeNameId = 60000;//传感器
            }
            int value = (int)info.BeloneType;
@@ -2505,6 +2543,7 @@
                mainDevice.DeviceEpointName = device.DeviceInfo.DeviceName;
            }
            mainDevice.CurrentGateWayId = device.CurrentGateWayId;
            mainDevice.ZigbeeType = device.DeviceInfo.ZigbeeType;
            mainDevice.IsOnline = device.DeviceInfo.IsOnline;
            mainDevice.DriveCode = device.DeviceInfo.DriveCode;
            mainDevice.IasDeviceType = device.DeviceInfo.DeviceType;
@@ -2616,6 +2655,7 @@
            else if (deviceType == DeviceType.FreshAir) { device = new FreshAir(); }
            else if (deviceType == DeviceType.DoorLock) { device = new DoorLock(); }
            else if (deviceType == DeviceType.TemperatureSensor) { device = new TemperatureSensor(); }
            else if (deviceType == DeviceType.PMSensor) { device = new PMSensor(); }
            else if (deviceType == DeviceType.FreshAirHumiditySensor) { device = new HumiditySensor(); }
            else if (deviceType == DeviceType.OtaDevice || deviceType == DeviceType.OtaPanelDevice) { device = new OTADevice(); }
            else { return null; }
@@ -3069,6 +3109,10 @@
        /// </summary>
        A传感器 = 1200,
        /// <summary>
        /// PM2.5空气质量传感器
        /// </summary>
        APM2点5空气质量传感器 = 1307,
        /// <summary>
        /// 继电器(2300-2499)
        /// </summary>
        A继电器 = 2300,
ZigbeeApp/Shared/Phone/Category/AdjustTargetAddDeviceForm.cs
@@ -517,7 +517,7 @@
                    string path1 = string.Empty;
                    string path2 = string.Empty;
                    //获取图片
                    LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    dic[typeInfo.BeloneTextId].IconPath = path1;
                    dic[typeInfo.BeloneTextId].IconPathSelected = path2;
                    dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
@@ -502,6 +502,11 @@
                    {
                        cardContr = new Controls.DeviceFreshAirRowControl();
                    }
                    // PM2.5
                    else if (device.Type == DeviceType.PMSensor)
                    {
                        cardContr = new Controls.DevicePmSensorRowControl();
                    }
                    //彩灯(调光器)
                    else if (device.Type == DeviceType.DimmableLight)
                    {
@@ -844,14 +849,9 @@
                    string path1 = string.Empty;
                    string path2 = string.Empty;
                    //获取图片
                    LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    dic[typeInfo.BeloneTextId].IconPath = path1;
                    dic[typeInfo.BeloneTextId].IconPathSelected = path2;
                    if (device.Type == DeviceType.FreshAir)
                    {
                        dic[typeInfo.BeloneTextId].IconPath = "Device/FreshAirEpoint.png";
                        dic[typeInfo.BeloneTextId].IconPathSelected = "Device/FreshAirEpointSelected.png";
                    }
                    dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
                }
                dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DevicePmSensorRowControl.cs
New file
@@ -0,0 +1,58 @@
using System;
using Shared.Phone.UserCenter;
using ZigBee.Device;
namespace Shared.Phone.Category.Controls
{
    /// <summary>
    /// 分类界面的PM2.5传感器设备行控件
    /// </summary>
    public class DevicePmSensorRowControl : DeviceRowCommon
    {
        /// <summary>
        /// 初始化控件
        /// </summary>
        /// <param name="i_device"></param>
        public override void InitControl(CommonDevice i_device)
        {
            base.InitControl(i_device);
            //添加跳转深度卡片信息事件
            this.AddDetailInfoEvent(i_device);
        }
        #region ■ 深度卡片信息_______________________
        /// <summary>
        /// 添加跳转深度卡片信息事件
        /// </summary>
        private void AddDetailInfoEvent(CommonDevice i_device)
        {
            //深度卡片信息
            this.frameTable.ButtonClickEvent += (sender, e) =>
            {
                //PM2.5传感器类型的深度卡片界面
                var form = new MainPage.ControlForm.DevicePmSensorDetailCardForm();
                form.AddForm(i_device, HdlRoomLogic.Current.CurrentRoom, 965, 1374);
                form.FormCloseEvent += this.CardDetailInfoBackEvent;
            };
        }
        #endregion
        #region ■ 发送获取状态命令___________________
        /// <summary>
        /// 发送获取状态命令
        /// </summary>
        public override void SendStatuComand()
        {
            //检测能否发送获取状态命令
            if (this.CheckCanSendStatuComand() == true)
            {
                HdlDeviceAttributeLogic.Current.SendFreshAirStatuComand(this.device);
            }
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/Device/Logic/LogicView/TipView.cs
old mode 100644 new mode 100755
@@ -71,10 +71,8 @@
            {
                Y = topFrame.Bottom,
                Width = Application.GetRealWidth(792),
                Height = Application.GetRealHeight(127),
             Gravity=Gravity.BottomCenter,
                Height = Application.GetRealHeight(127),
                Gravity = Gravity.BottomCenter,
            };
            tipFLayout.AddChidren(bottomFrame);
@@ -87,8 +85,7 @@
                Height = bottomFrame.Height,
                Width = Application.GetRealWidth(397),
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
                TextID = R.MyInternationalizationString.cancel,
                TextID = R.MyInternationalizationString.cancel,
            };
            bottomFrame.AddChidren(cancelBtn);
            cancelBtn.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerBottomLeft);
@@ -160,7 +157,7 @@
                Y = Application.GetRealHeight(69),
                X = Application.GetRealWidth(150),
                Height = Application.GetRealHeight(63),
                Width = Application.GetRealWidth(492),
                Width = Application.GetRealWidth(492),
               TextID = R.MyInternationalizationString.invalidSetting,
                TextAlignment = TextAlignment.Center,
                TextColor = ZigbeeColor.Current.LogicTipColor,
@@ -248,7 +245,7 @@
            };
            bottomFrame.AddChidren(okBtn);
            if (_if) {
            if (_if) {
                cancelBtn.X = Application.GetRealWidth(0);
                cancelBtn.Width = Application.GetRealWidth(0);
                okBtn.X = Application.GetRealWidth(0);
@@ -361,7 +358,6 @@
                Width = Application.GetRealWidth(792),
                Height = Application.GetRealHeight(127),
                Gravity = Gravity.BottomCenter,
            };
            tipFLayout.AddChidren(bottomFrame);
            ///取消控件
@@ -472,8 +468,8 @@
                TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                TextSize = 14,
            };
            tipFLayout.AddChidren(Text1Btn);
            tipFLayout.AddChidren(Text1Btn);
            new System.Threading.Thread(() =>
            {
                System.Threading.Thread.Sleep(timeValue*1000);
@@ -486,3 +482,5 @@
        }
    }
}
ZigbeeApp/Shared/Phone/Device/Logic/SkipView.cs
@@ -72,7 +72,7 @@
        /// </summary>
        public static void ShowAutotionView(FrameLayout functionSceneAutoBodyView)
        {
            // functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            //functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            #region   ---推荐模板的组件
            //推荐模板背景控件
            var bjFrameLayout = new FrameLayout
ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs
@@ -19,12 +19,6 @@
        public  Action<bool> action;
        ///第二块第一级父控件
        FrameLayout fLayout = new FrameLayout();
        ///常开模式图标
        Button modeIconBtn = new Button();
        ///第二块第二级父控件
        FrameLayout modeFl = new FrameLayout();
        Button button1 = new Button();
        Button button2= new Button();
        ///第三块第一级父控件
        FrameLayout listLogicFl = new FrameLayout();
        ///常开自动化列表上下滑动的控件
@@ -92,30 +86,6 @@
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
            };
            middle.AddChidren(fLayout);
            ///常开模式图标
            modeIconBtn = new Button
            {
                X = Application.GetRealWidth(395),
                Y = Application.GetRealHeight(92),
                Width = Application.GetMinRealAverage(294),
                Height = Application.GetMinRealAverage(294),
            };
            fLayout.AddChidren(modeIconBtn);
            ///第二块第二级父控件
            modeFl = new FrameLayout
            {
            };
            fLayout.AddChidren(modeFl);
            button1 = new Button
            {
            };
            modeFl.AddChidren(button1);
            button2 = new Button
            {
            };
            modeFl.AddChidren(button2);
            ModeView();
            #endregion
            #region 常开自动化
@@ -162,7 +132,7 @@
                UnSelectedImagePath = "ZigeeLogic/add.png",
            };
            addLogicfL.AddChidren(addIconBtn);
            ///加大点击热键
            var addIconclickBtn = new Button
            {
                Width = Application.GetRealWidth(90 + 69 + 63),
@@ -245,33 +215,46 @@
        /// <summary>
        /// 常开模式开关切换图标界面
        /// </summary>
        public async void ModeView()
        public  void ModeView()
        {
            fLayout.RemoveAll();
            ///常开模式图标
            Button modeIconBtn = new Button
            {
                X = Application.GetRealWidth(395),
                Y = Application.GetRealHeight(92),
                Width = Application.GetMinRealAverage(294),
                Height = Application.GetMinRealAverage(294),
            };
            fLayout.AddChidren(modeIconBtn);
            if (Send.CurrentDoorLock.IsDoorLockNormallyMode)
            {
                fLayout.Height = Application.GetRealHeight(780);//改变高度
                fLayout.Height = Application.GetRealHeight(780);//改变高度
                modeIconBtn.UnSelectedImagePath = "ZigeeLogic/openMode.png";//改变图标状态
                modeFl.Y = modeIconBtn.Bottom + Application.GetRealHeight(64);
                modeFl.X = Application.GetRealWidth(0);
                modeFl.Height = Application.GetRealHeight(127 + 199);
                modeFl.Width = Application.GetRealHeight(1080);
                modeFl.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
                modeFl.SetCornerWithSameRadius(Application.GetRealHeight(0), HDLUtils.RectCornerBottomLeft);
                ///第二级父控件
                var openModeFl = new FrameLayout
                {
                    Y = Application.GetRealHeight(455),
                    Height = Application.GetRealHeight(127 + 199),
                    Width = Application.GetRealWidth(1080),
                };
                fLayout.AddChidren(openModeFl);
                ///关闭时效性自动化
                button1.Y = Application.GetRealHeight(0);
                button1.X = Application.GetRealWidth(86);
                button1.Width = Application.GetRealWidth(907);
                button1.Height = Application.GetRealHeight(127);
                button1.Radius = (uint)Application.GetRealHeight(58);
                button1.BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor;
                button1.TextAlignment = TextAlignment.Center;
                button1.TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor;
                button1.TextID = MyInternationalizationString.closeUp;
                button1.TextSize = 16;
                button1.MouseUpEventHandler = async (sender, e) =>
                Button closeBtn = new Button
                {
                    X = Application.GetRealWidth(86),
                    Height = Application.GetRealHeight(127),
                    Width = Application.GetRealWidth(907),
                    Radius = (uint)Application.GetRealHeight(58),
                    BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor,
                    TextID = MyInternationalizationString.closeUp,
                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
                    TextSize = 16,
                };
                openModeFl.AddChidren(closeBtn);
                closeBtn.MouseUpEventHandler += async (sender, e) =>
                {
                    CommonPage.Loading.Start();
                    try
@@ -302,16 +285,20 @@
                        });
                    }
                };
                ///显示失效设置时间文本控件
                var timeTextBtn = new Button
                {
                    Y = Application.GetRealHeight(127 + 69),
                    X = Application.GetRealWidth(125),
                    Width = Application.GetRealWidth(634 + 200),
                    Height = Application.GetRealHeight(60),
                    TextSize = 15,
                    TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                };
                if (logicId != 0)
                {
                    ///显示失效设置时间文本控件
                    button2.Y = Application.GetRealHeight(127 + 69);
                    button2.X = Application.GetRealWidth(125);
                    button2.Width = Application.GetRealWidth(634 + 200);
                    button2.Height = Application.GetRealHeight(60);
                    button2.UnSelectedImagePath = "ZigeeLogic/1234.png";
                    button2.TextSize = 15;
                    button2.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                    openModeFl.AddChidren(timeTextBtn);
                    ///有时效性常开才显示时间条件文本
                    var y = DateTime.Now.Year.ToString();//那一年
                    var m = DateTime.Now.Month.ToString();//那一月
@@ -325,72 +312,80 @@
                    string text3 = Language.StringByID(MyInternationalizationString.monthSone);
                    string text4 = Language.StringByID(MyInternationalizationString.numberSone);
                    string text5 = Language.StringByID(MyInternationalizationString.executeSone);
                    button2.Text = text1 + y + text2 + m + text3 + days.ToString() + text4 + hour.ToString() + text5;
                    timeTextBtn.Text = text1 + y + text2 + m + text3 + days.ToString() + text4 + hour.ToString() + text5;
                }
                else
                {
                    button2.Y = Application.GetRealHeight(0);
                    button2.X = Application.GetRealWidth(0);
                    button2.Width = Application.GetRealWidth(0);
                    button2.Height = Application.GetRealHeight(0);
                }
            }
            else
            {
                fLayout.Height = Application.GetRealHeight(645);//改变高度
                modeIconBtn.UnSelectedImagePath = "ZigeeLogic/noMode.png";//改变图标状态
                modeFl.Y = modeIconBtn.Bottom + Application.GetRealHeight(92);
                modeFl.X = Application.GetRealWidth(58);
                modeFl.Height = Application.GetRealHeight(138);
                modeFl.Width = Application.GetRealHeight(1022);
                modeFl.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
                ///第二级父控件
                var modeFl = new FrameLayout
                {
                    Y = Application.GetRealHeight(478),
                    X = Application.GetRealWidth(58),
                    Height = Application.GetRealHeight(138),
                    Width = Application.GetRealWidth(1022),
                    BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
                };
                fLayout.AddChidren(modeFl);
                modeFl.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
                ///时效性常开设置显示文本控件
                button1.Y = Application.GetRealHeight(40);
                button1.X = Application.GetRealWidth(58);
                button1.Width = Application.GetRealWidth(600);
                button1.Height = Application.GetRealHeight(60);
                button1.Radius = (uint)Application.GetRealHeight(0);
                button1.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
                button1.TextAlignment = TextAlignment.CenterLeft;
                button1.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                // Text = "时效性常开设置",
                button1.TextID = MyInternationalizationString.timeSetSone;
                button1.TextSize = 15;
                ///下一级菜单图标控件
                button2.Width = Application.GetMinRealAverage(104);
                button2.Height = Application.GetMinRealAverage(104);
                button2.X = Application.GetRealWidth(861);
                button2.Y = Application.GetRealHeight(17);
                button2.UnSelectedImagePath = "ZigeeLogic/nextIconSone.png";
                button2.TextSize = 15;
                button2.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                button2.Text ="";
                button2.MouseUpEventHandler = (sender, e) =>
                var modeTextBtn = new Button
                {
                    LogicView.TipView.ShowConfrimTip(() =>
                    Y = Application.GetRealHeight(40),
                    X = Application.GetRealWidth(58),
                    Width = Application.GetRealWidth(600),
                    Height = Application.GetRealHeight(60),
                    TextSize = 15,
                    TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                    TextAlignment = TextAlignment.CenterLeft,
                    // Text = "时效性常开设置",
                    TextID = MyInternationalizationString.timeSetSone,
                };
                modeFl.AddChidren(modeTextBtn);
                ///下一级菜单图标控件
                var nextIconBtn = new Button
                {
                    Width = Application.GetMinRealAverage(104),
                    Height = Application.GetMinRealAverage(104),
                    X = Application.GetRealWidth(861),
                    Y = Application.GetRealHeight(17),
                    UnSelectedImagePath = "ZigeeLogic/nextIconSone.png",
                };
                modeFl.AddChidren(nextIconBtn);
                    {///再次确认
                ///加大点击热键
                var clickBtn = new Button
                {
                    Width = Application.GetRealWidth(104 + 161 + 30),
                    Height = Application.GetRealHeight(138),
                    X = Application.GetRealWidth(700),
                };
                modeFl.AddChidren(clickBtn);
                clickBtn.MouseUpEventHandler += (sender, e) =>
                 {
                     LogicView.TipView.ShowConfrimTip(() =>
                     {///再次确认
                        LogicView.TipView.ShowInputTip(true, async (str) =>
                        {///确认发送命令
                         {///确认发送命令
                            CommonPage.Loading.Start();
                            try
                            {
                             try
                             {
                                ///xm
                                var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock);
                                if (!result)
                                {
                                    LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed));
                                    return;
                                }
                                else
                                {
                                 if (!result)
                                 {
                                     LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed));
                                     return;
                                 }
                                 else
                                 {
                                    ///因为有常开模式下才可以创建失效逻辑;
                                    SkipView.GetLogicAll();//删除之前所有失效逻辑
                                    var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑
@@ -477,8 +472,10 @@
            }
        }
        RowLayout selectedRow = new RowLayout() { Tag = "0" };//记录左滑状态
        /// <summary>
        /// 记录左滑状态
        /// </summary>
        RowLayout selectedRow = new RowLayout() { Tag = "0" };
        int a = 1;
        /// <summary>
        /// 加载自动化列表
@@ -644,6 +641,6 @@
                };
            }
        }
    }
}
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceFreshAirDetailCardForm.cs
@@ -19,7 +19,7 @@
        /// <summary>
        /// 控件
        /// </summary>
        private FreshAir FreshAirDev = null;
        private FreshAir freshAirDev = null;
        /// <summary>
        /// 状态控件
        /// </summary>
@@ -39,10 +39,9 @@
        #region ■ 初始化_____________________________
        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
        {
            //左滑不能
            this.ScrollEnabled = true;
            this.FreshAirDev = (FreshAir)this.device;
            this.freshAirDev = (FreshAir)this.device;
            //先清空
            this.listControl = new List<ButtonBase>();
            InitFreshAirControl(frameWhiteBack);
@@ -64,6 +63,13 @@
            frameAcBack.BackgroundImagePath = "FreshAir/FreshAirPic.png";
            frameWhiteBack.AddChidren(frameAcBack);
            //新风自动Layout【为了扩大点击范围】
            var autoFrameLayout = new NormalViewControl(213 + 40, 63 + 80, true);
            autoFrameLayout.X = Application.GetRealWidth(275 - 20);
            autoFrameLayout.Y = Application.GetRealHeight(821 - 20);
            frameWhiteBack.AddChidren(autoFrameLayout);
            autoFrameLayout.ButtonClickEvent += HandlerAuto;
            // 自动(第1个,listControl【0】)
            var btnAuto = new NormalViewControl(213, 63, true);
            btnAuto.X = Application.GetRealWidth(275);
@@ -73,14 +79,9 @@
            btnAuto.IsBold = false;
            btnAuto.TextAlignment = TextAlignment.Center;
            frameWhiteBack.AddChidren(btnAuto);
            this.listControl.Add(btnAuto);
            btnAuto.ButtonClickEvent += (sender, e) =>
            {
                if (!btnAuto.IsSelected)
                {
                    this.SetFanComand(5);
                }
            };
            btnAuto.ButtonClickEvent += HandlerAuto;
            //自动下划线(第2个,listControl【1】)
            var btnAutoLine = new NormalViewControl(72, 12, true);
@@ -90,6 +91,14 @@
            btnAutoLine.Visible = false;
            frameWhiteBack.AddChidren(btnAutoLine);
            this.listControl.Add(btnAutoLine);
            btnAutoLine.ButtonClickEvent += HandlerAuto;
            //新风手动Layout【为了扩大点击范围】
            var manualFrameLayout = new NormalViewControl(213 + 40, 63 + 80, true);
            manualFrameLayout.X = Application.GetRealWidth(488 - 20);
            manualFrameLayout.Y = Application.GetRealHeight(821 - 20);
            frameWhiteBack.AddChidren(manualFrameLayout);
            manualFrameLayout.ButtonClickEvent += HandlerManual;
            //手动(第3个,listControl【2】)
            var btnManual = new NormalViewControl(213, 63, true);
@@ -101,13 +110,7 @@
            btnManual.TextAlignment = TextAlignment.Center;
            frameWhiteBack.AddChidren(btnManual);
            this.listControl.Add(btnManual);
            btnManual.ButtonClickEvent += (sender, e) =>
            {
                if (!btnManual.IsSelected)
                {
                    this.SetFanComand(15);
                }
            };
            btnManual.ButtonClickEvent += HandlerManual;
            //手动下划线(第4个,listControl【3】)
            var btnManualLine = new NormalViewControl(72, 12, true);
@@ -117,6 +120,7 @@
            btnManualLine.Visible = false;
            frameWhiteBack.AddChidren(btnManualLine);
            this.listControl.Add(btnManualLine);
            btnManualLine.ButtonClickEvent += HandlerManual;
            //高风(第5个,listControl【4】)
            var btnHighSpeed = new IconViewControl(81);
@@ -128,7 +132,11 @@
            this.listControl.Add(btnHighSpeed);
            btnHighSpeed.ButtonClickEvent += (sender, e) =>
            {
                if (FreshAirDev.currentFanMode == 5)
                if (freshAirDev.currentFanStatus == 0)
                {
                    return;
                }
                if (freshAirDev.currentFanMode == 5)
                {
                    var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AutoModeForbiddenOperate));
                    msgContr.Show();
@@ -137,6 +145,7 @@
                if (!btnHighSpeed.IsSelected)
                {
                    this.listControl[4].Enable = false;
                    this.SetFanComand(3);
                }
            };
@@ -154,10 +163,12 @@
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if (btnSwitch.IsSelected)
                {
                    this.listControl[5].Enable = false;
                    this.SetFanComand(4);
                }
                else
                {
                    this.listControl[5].Enable = false;
                    this.SetFanComand(0);
                }
            };
@@ -172,7 +183,11 @@
            this.listControl.Add(btnLowSpeed);
            btnLowSpeed.ButtonClickEvent += (sender, e) =>
            {
                if (FreshAirDev.currentFanMode == 5)
                if (freshAirDev.currentFanStatus == 0)
                {
                    return;
                }
                if (freshAirDev.currentFanMode == 5)
                {
                    var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AutoModeForbiddenOperate));
                    msgContr.Show();
@@ -180,9 +195,54 @@
                }
                if (!btnLowSpeed.IsSelected)
                {
                    this.listControl[6].Enable = false;
                    this.SetFanComand(1);
                }
            };
        }
        /// <summary>
        /// 自动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HandlerAuto(object sender, MouseEventArgs e)
        {
            if (freshAirDev.currentFanStatus == 0)
            {
                return;
            }
            if (freshAirDev.currentFanMode == 5)
            {
                return;
            }
            if (!listControl[0].IsSelected)
            {
                this.listControl[0].Enable = false;
                this.SetFanComand(5);
            }
        }
        /// <summary>
        /// 手动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HandlerManual(object sender, MouseEventArgs e)
        {
            if (freshAirDev.currentFanStatus == 0)
            {
                return;
            }
            if (freshAirDev.currentFanMode == 15)
            {
                return;
            }
            if (!this.listControl[2].IsSelected)
            {
                this.listControl[2].Enable = false;
                this.SetFanComand(15);
            }
        }
        #endregion 
@@ -217,6 +277,11 @@
                    }
                }
            }
            this.listControl[0].Enable = true;
            this.listControl[2].Enable = true;
            this.listControl[4].Enable = true;
            this.listControl[5].Enable = true;
            this.listControl[6].Enable = true;
            return false;
        }
        #endregion
@@ -245,22 +310,22 @@
            switch (command)
            {
                case 0:
                    FreshAirDev.Close();
                    freshAirDev.Close();
                    break;
                case 1:
                    FreshAirDev.SetLowSpeed();
                    freshAirDev.SetLowSpeed();
                    break;
                case 3:
                    FreshAirDev.SetHighSpeed();
                    freshAirDev.SetHighSpeed();
                    break;
                case 4:
                    FreshAirDev.Open();
                    freshAirDev.Open();
                    break;
                case 5:
                    FreshAirDev.SetAuto();
                    freshAirDev.SetAuto();
                    break;
                case 15:
                    FreshAirDev.SetManual();
                    freshAirDev.SetManual();
                    break;
            }
        }
@@ -273,14 +338,15 @@
        private void UpdateStatus()
        {
            //设置状态文字
            if (FreshAirDev.currentFanStatus == 4)
            if (freshAirDev.currentFanStatus == 4)
            {
                this.listControl[5].Enable = true;
                //打开
                this.listControl[5].IsSelected = true;
                //设置状态文字 
                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
            }
            if (FreshAirDev.currentFanStatus == 0)
            if (freshAirDev.currentFanStatus == 0)
            {
                //关闭
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3;
@@ -292,13 +358,14 @@
                this.listControl[4].IsSelected = false;
                this.listControl[5].IsSelected = false;
                this.listControl[6].IsSelected = false;
                this.listControl[5].Enable = true;
                //设置状态文字 
                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                return;
            }
            //设置模式
            if (FreshAirDev.currentFanMode == 5)
            if (freshAirDev.currentFanMode == 5)
            {
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray1;
                this.listControl[0].IsBold = true;
@@ -306,8 +373,9 @@
                this.listControl[2].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[2].IsBold = false;
                this.listControl[3].Visible = false;
                this.listControl[0].Enable = true;
            }
            else if (FreshAirDev.currentFanMode == 15)
            else if (freshAirDev.currentFanMode == 15)
            {
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[0].IsBold = false;
@@ -315,18 +383,21 @@
                this.listControl[2].TextColor = ZigbeeColor.Current.XMGray1;
                this.listControl[2].IsBold = true;
                this.listControl[3].Visible = true;
                this.listControl[2].Enable = true;
            }
            //设置风速
            if (FreshAirDev.currentFanSpeed == 1)
            if (freshAirDev.currentFanSpeed == 1)
            {
                this.listControl[4].IsSelected = false;
                this.listControl[6].IsSelected = true;
                this.listControl[6].Enable = true;
            }
            else if (FreshAirDev.currentFanSpeed == 3)
            else if (freshAirDev.currentFanSpeed == 3)
            {
                this.listControl[4].IsSelected = true;
                this.listControl[6].IsSelected = false;
                this.listControl[4].Enable = true;
            }
        }
        #endregion
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
New file
@@ -0,0 +1,279 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserCenter;
using ZigBee.Device;
namespace Shared.Phone.MainPage.ControlForm
{
    /// <summary>
    /// PM2.5传感器类型的深度卡片界面
    /// </summary>
    public class DevicePmSensorDetailCardForm : DeviceDetailCardCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 界面上可以操作的控件
        /// </summary>
        private List<ButtonBase> listControl = new List<ButtonBase>();
        /// <summary>
        /// 控件
        /// </summary>
        private PMSensor pMSensor = null;
        /// <summary>
        /// 状态控件
        /// </summary>
        private NormalViewControl btnStatu = null;
        /// <summary>
        /// 当前的文本
        /// </summary>
        private string CurrentText = string.Empty;
        /// <summary>
        /// 设备名称控件
        /// </summary>
        private NormalViewControl btnDeviceName = null;
        #endregion
        #region ■ 初始化_____________________________
        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
        {
            //左滑不能
            this.ScrollEnabled = true;
            this.pMSensor = (PMSensor)this.device;
            //先清空
            this.listControl = new List<ButtonBase>();
            InitFreshAirControl(frameWhiteBack);
            UpdateStatus();
        }
        /// <summary>
        /// 初始化PM2.5传感器控件
        /// </summary>
        /// <param name="frameWhiteBack"></param>
        private void InitFreshAirControl(FrameLayout frameWhiteBack)
        {
            //湿度容器
            var frameHumidityPic = new FrameLayout();
            frameHumidityPic.X = Application.GetMinRealAverage(138);
            frameHumidityPic.Y = Application.GetRealHeight(242);
            frameHumidityPic.Width = Application.GetMinRealAverage(311);
            frameHumidityPic.Height = Application.GetMinRealAverage(351);
            frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png";
            frameWhiteBack.AddChidren(frameHumidityPic);
            //湿度文本
            var btnHumidityText = new NormalViewControl(311, 49, true);
            btnHumidityText.Y = Application.GetRealHeight(45);
            btnHumidityText.TextID = R.MyInternationalizationString.Humidity;
            btnHumidityText.TextSize = 12;
            btnHumidityText.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityText.TextAlignment = TextAlignment.Center;
            frameHumidityPic.AddChidren(btnHumidityText);
            //湿度数据(第1个,listControl【0】)
            var btnHumidityStatus = new NormalViewControl(193, 92, true);
            btnHumidityStatus.Y = Application.GetRealHeight(181);
            btnHumidityStatus.Text = "20";
            btnHumidityStatus.TextSize = 32;
            btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityStatus.TextAlignment = TextAlignment.CenterRight;
            frameHumidityPic.AddChidren(btnHumidityStatus);
            this.listControl.Add(btnHumidityStatus);
            //湿度单位
            var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
            btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
            btnHumidityUnit.X = Application.GetRealWidth(190);
            btnHumidityUnit.Text = "%";
            btnHumidityUnit.TextSize = 14;
            btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityUnit.TextAlignment = TextAlignment.CenterLeft;
            frameHumidityPic.AddChidren(btnHumidityUnit);
            //温度容器
            var frameTemperaturePic = new FrameLayout();
            frameTemperaturePic.X = Application.GetMinRealAverage(518);
            frameTemperaturePic.Y = Application.GetRealHeight(242);
            frameTemperaturePic.Width = Application.GetMinRealAverage(311);
            frameTemperaturePic.Height = Application.GetMinRealAverage(351);
            frameTemperaturePic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png";
            frameWhiteBack.AddChidren(frameTemperaturePic);
            //温度文本
            var btnTemperatureText = new NormalViewControl(311, 49, true);
            btnTemperatureText.Y = Application.GetRealHeight(45);
            btnTemperatureText.TextID = R.MyInternationalizationString.Temperature;
            btnTemperatureText.TextSize = 12;
            btnTemperatureText.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureText.TextAlignment = TextAlignment.Center;
            frameTemperaturePic.AddChidren(btnTemperatureText);
            //温度数据(第2个,listControl【1】)
            var btnTemperatureStatus = new NormalViewControl(193, 92, true);
            btnTemperatureStatus.Y = Application.GetRealHeight(181);
            btnTemperatureStatus.Text = "20";
            btnTemperatureStatus.TextSize = 32;
            btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureStatus.TextAlignment = TextAlignment.CenterRight;
            frameTemperaturePic.AddChidren(btnTemperatureStatus);
            this.listControl.Add(btnTemperatureStatus);
            //温度单位
            var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
            btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
            btnTemperatureUnit.X = Application.GetRealWidth(188);
            btnTemperatureUnit.Text = "℃";
            btnTemperatureUnit.TextSize = 14;
            btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureUnit.TextAlignment = TextAlignment.CenterLeft;
            frameTemperaturePic.AddChidren(btnTemperatureUnit);
            //PM2.5传感器的PM2.5容器
            var framePmPic = new FrameLayout();
            framePmPic.X = Application.GetMinRealAverage(138);
            framePmPic.Y = Application.GetRealHeight(662);
            framePmPic.Width = Application.GetMinRealAverage(311);
            framePmPic.Height = Application.GetMinRealAverage(351);
            framePmPic.BackgroundImagePath = "PM2.5Sensor/PmPic.png";
            frameWhiteBack.AddChidren(framePmPic);
            //PM2.5文本
            var btnPmText = new NormalViewControl(311, 49, true);
            btnPmText.Y = Application.GetRealHeight(45);
            btnPmText.Text = "PM2.5";
            btnPmText.TextSize = 12;
            btnPmText.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmText.TextAlignment = TextAlignment.Center;
            framePmPic.AddChidren(btnPmText);
            //PM2.5数据(第3个,listControl【2】)
            var btnPmStatus = new NormalViewControl(109 + 40, 92, true);
            btnPmStatus.Y = Application.GetRealHeight(181);
            btnPmStatus.Text = "35";
            btnPmStatus.TextSize = 32;
            btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmStatus.TextAlignment = TextAlignment.CenterRight;
            framePmPic.AddChidren(btnPmStatus);
            this.listControl.Add(btnPmStatus);
            //PM2.5单位
            var btnPmUnit = new NormalViewControl(124 + 15, 43, true);
            btnPmUnit.Y = Application.GetRealHeight(181 + 46);
            btnPmUnit.X = Application.GetRealWidth(150);
            btnPmUnit.Text = "μg/m³";
            btnPmUnit.TextSize = 14;
            btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmUnit.TextAlignment = TextAlignment.CenterLeft;
            framePmPic.AddChidren(btnPmUnit);
        }
        #endregion
        #region ■ 是否获取网关反馈的结果_____________
        /// <summary>
        /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
        /// </summary>
        /// <param name="comandDiv">命令区分</param>
        /// <param name="report">上报数据</param>
        /// <returns></returns>
        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
        {
            if (comandDiv == ReceiveComandDiv.A设备属性上报)
            {
                if (report.DeviceStatusReport.CluterID == 1026)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1029)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1066)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        #endregion
        #region ■ 设置方法
        /// <summary>
        ///命令
        ///0:Off
        ///1:Low
        ///3:High
        ///4:On
        ///5:Auto
        /// 15:Manual
        /// </summary>
        private void SetFanComand(int command)
        {
            //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
            this.StartCheckResponeResult(this.listControl, (result) =>
            {
                //接收到网关回复
                if (result == true)
                {
                }
            });
        }
        #endregion
        #region ■ 刷新状态_____________
        /// <summary>
        /// 刷新状态
        /// </summary>
        private void UpdateStatus()
        {
            //设置状态文字
            this.listControl[0].Text = pMSensor.currentTemperature.ToString();
            this.listControl[1].Text = pMSensor.currentHumidity.ToString();
            this.listControl[2].Text = pMSensor.currentPmData.ToString();
            //设置状态文字
            this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/MainPage/UnallocatedRoomForm.cs
@@ -635,7 +635,7 @@
                    string path1 = string.Empty;
                    string path2 = string.Empty;
                    //获取图片
                    Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    Common.LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    dic[typeInfo.BeloneTextId].IconPath = path1;
                    dic[typeInfo.BeloneTextId].IconPathSelected = path2;
                    dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs
@@ -192,6 +192,12 @@
                strType = Language.StringByID(R.MyInternationalizationString.FreshAir);
                nowSelectNo = -1;
            }
            else if (this.device.Type == DeviceType.PMSensor)
            {
                //PM2.5传感器固定为 空气质量
                strType = Language.StringByID(R.MyInternationalizationString.AirQuality);
                nowSelectNo = -1;
            }
            //显示文本
            this.txtView.Text = strType;
@@ -216,6 +222,7 @@
                || this.device.Type == DeviceType.OnOffOutput//继电器
                || this.device.Type == DeviceType.Thermostat//空调
                || this.device.Type == DeviceType.FreshAir//新风
                || this.device.Type == DeviceType.PMSensor //PM2.5
                || this.device.Type == DeviceType.WindowCoveringDevice)//窗帘
            {
                return true;
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -84,7 +84,7 @@
            //初始化桌布
            this.tableContr = new InformationEditorControl();
            if (this.deviceObj.Type == DeviceType.FreshAir)
            if (this.deviceObj.Type == DeviceType.FreshAir || this.deviceObj.Type == DeviceType.PMSensor)
            {
                this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
            }
@@ -330,6 +330,19 @@
                        frameBack.Y = Application.GetRealHeight(153);
                        frameBack.Gravity = Gravity.Center;
                    }
                    //如果是PM2.5
                    if (deviceObj.Type == DeviceType.PMSensor)
                    {
                        frame.RemoveFromParent();
                        frameBorder.Y = Application.GetRealHeight(0);
                        frameBorder.Height = Application.GetRealHeight(708);
                        frameBack.BackgroundImagePath = "RealDevice/SensorPMTwoPointFive.png";
                        frameBack.Width = this.GetPictrueRealSize(418);
                        frameBack.Height = this.GetPictrueRealSize(403);
                        frameBack.Y = Application.GetRealHeight(153);
                        frameBack.Gravity = Gravity.Center;
                    }
                }
                else
                {
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -268,7 +268,16 @@
                if (this.CheckCanShowFunctionSettionRow() == true)
                {
                    //添加【功能设置】行
                    this.AddFunctionSettionRow();
                    if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Sensor_PMTwoPointFive)
                    {
                        //PM传感器
                        this.AddFunctionSettionRowPM();
                    }
                    else
                    {
                        this.AddFunctionSettionRow();
                    }
                }
                //添加【干接点设置】行
@@ -682,7 +691,7 @@
            //只有回路数大于1才能有这个菜单
            if (Common.LocalDevice.Current.GetDevicesCountByMac(listNewDevice[0].DeviceAddr) == 1)
            {
                //要求新风小模块的新风有功能设置
                //新风小模块只有一个回路,但要求新风小模块的新风有功能设置
                if (deviceEnumInfo.ConcreteType != DeviceConcreteType.Relay_FangyueFreshAirModul)
                {
                    return;
@@ -743,6 +752,27 @@
            };
        }
        /// <summary>
        /// 添加传感器【功能设置】行
        /// </summary>
        private void AddFunctionSettionRowPM()
        {
            //功能设置
            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp);
            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(btnFunction);
            btnFunction.AddLeftCaption(caption, 600);
            //向右图标
            btnFunction.AddRightArrow();
            //底线
            btnFunction.AddBottomLine();
            btnFunction.ButtonClickEvent += (sender, e) =>
            {
                var form = new DeviceFunctionSettionForm();
                form.AddForm(listNewDevice[0], false);
            };
        }
        #endregion;
        #region ■ 方向与限位(窗帘)___________________
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirBackLightSettionForm.cs
@@ -70,6 +70,7 @@
            listview = new VerticalScrolViewLayout();
            listview.Height = Application.GetRealHeight(1981 - 184);
            bodyFrameLayout.AddChidren(listview);
            listview.ScrollEnabled = false;
            HdlThreadLogic.Current.RunMain(() =>
            {
@@ -79,10 +80,8 @@
                //添加屏幕亮度级别控件
                this.AddScreenBrightnesLevelControl();
                //添加背光灯亮度控件【暂时不需要,可能后期新风面板的这个颜色要补回来】
                this.AddBackLightControl();
                //【暂时不需要,可能后期新风面板的这个颜色要补回来】
                //this.FinishInitControl(listview, energyModeInfo.enable);
                //添加新风面板的颜色
                this.AddColorControl();
                //保存
                var btnSave = new BottomClickButton();
@@ -262,7 +261,7 @@
        /// <summary>
        /// 添加背光颜色控件
        /// </summary>
        private void AddBackLightControl()
        private void AddColorControl()
        {
            var btnEspace = new NormalViewControl(600, 58, true);
            btnEspace.X = ControlCommonResourse.XXLeft;
@@ -331,20 +330,44 @@
            frameColor.ButtonClickEvent += (sender, e) =>
            {
                var form = new PanelColorSelectForm();
                form.AddForm(R1, G1, B1);
                form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
                {
                    R1 = Rcolor;
                    G1 = Gcolor;
                    B1 = Bcolor;
                PanelColor(btnColor, R1, G1, B1);
            };
            btnColorView.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, R1, G1, B1);
            };
            btnColor.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, R1, G1, B1);
            };
            btnColorLine.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, R1, G1, B1);
            };
            btnRight.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, R1, G1, B1);
            };
        }
                    this.keyColorData.OpenColorR = Convert.ToString(Rcolor, 16);
                    this.keyColorData.OpenColorG = Convert.ToString(Gcolor, 16);
                    this.keyColorData.OpenColorB = Convert.ToString(Bcolor, 16);
        /// <summary>
        /// PanelColorSelectForm
        /// </summary>
        private void PanelColor(NormalViewControl btnColor, int R1, int G1, int B1)
        {
            var form = new PanelColorSelectForm();
            form.AddForm(R1, G1, B1);
            form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
            {
                R1 = Rcolor;
                G1 = Gcolor;
                B1 = Bcolor;
                    btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
                };
                this.keyColorData.OpenColorR = Convert.ToString(Rcolor, 16);
                this.keyColorData.OpenColorG = Convert.ToString(Gcolor, 16);
                this.keyColorData.OpenColorB = Convert.ToString(Bcolor, 16);
                btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
            };
        }
@@ -382,8 +405,6 @@
                {
                    frameBack.Height -= value;
                }
                //容器补充
                this.FinishInitControl(listview, energyModeInfo.enable);
            };
            if (energyModeInfo.enable == true)
            {
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
@@ -103,6 +103,10 @@
        /// PM绑定目标回调
        /// </summary>
        public Action<string> actionPMTarget = null;
        /// <summary>
        /// 是否能点击保存按钮
        /// </summary>
        private bool canSave = true;
        #endregion
        #region UI设计 
@@ -864,6 +868,7 @@
        /// <param name="curControlDev"></param>
        void SaveTarget()
        {
            btnFinifh.Enable = false;
            if (targetList.Count == 0)
            {
                //空目标
@@ -978,6 +983,11 @@
                    catch (Exception ex)
                    {
                        var mess = ex.Message;
                        Application.RunOnMainThread(() =>
                        {
                            CommonPage.Loading.Hide();
                        });
                        btnFinifh.Enable = true;
                    }
                });
            }
@@ -1180,6 +1190,11 @@
                    }
                    catch (Exception ex)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            CommonPage.Loading.Hide();
                        });
                        btnFinifh.Enable = true;
                        var mess = ex.Message;
                    }
                });
@@ -1368,6 +1383,11 @@
            foreach (var de in room.ListDevice)
            {
                var device = LocalDevice.Current.GetDevice(de);
                //电池设备不支持绑定
                if (device.ZigbeeType != 1)
                {
                    continue;
                }
                if (device != null)
                {
                    if (device.Type == DeviceType.TemperatureSensor)
@@ -1393,6 +1413,11 @@
            foreach (var de in room.ListDevice)
            {
                var device = LocalDevice.Current.GetDevice(de);
                //电池设备不支持绑定
                if (device.ZigbeeType != 1)
                {
                    continue;
                }
                if (device != null)
                {
                    if (device.Type == DeviceType.TemperatureSensor)
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -196,6 +196,11 @@
                {
                    //上报“常开模式”已被取消,app默认了“常开模式”被取消 
                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                    if (haveLogic)
                    {
                        //此处删除温居城的常开模式特殊逻辑
                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                    }
                }
                else
                {
@@ -213,8 +218,11 @@
                    //上报“常开模式”已被取消
                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                    //温居城方法???
                    //此处是否要删除温居城的特殊逻辑
                    if (haveLogic)
                    {
                        //此处删除温居城的常开模式特殊逻辑
                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                    }
                    //app重新开启“常开模式”
                    var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
@@ -273,8 +281,7 @@
                    NormallyOpenModeValue(doorLock, false);
                    if (haveLogic)
                    {
                        //温居城方法???
                        //此处是否要删除温居城的特殊逻辑
                        //此处删除温居城的常开模式特殊逻辑
                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                    }
                }
@@ -315,9 +322,8 @@
                        //删除设置常开模式创建的逻辑
                        if (haveLogic)
                        {
                            //此处删除温居城的常开模式特殊逻辑
                            var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                            //温居城方法???
                            //此处是否要删除温居城的特殊逻辑
                        }
                        Application.RunOnMainThread(() =>
                        {
ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
@@ -248,7 +248,7 @@
                    string path1 = string.Empty;
                    string path2 = string.Empty;
                    //获取图片
                    Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    Common.LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    dic[typeInfo.BeloneTextId].IconPath = path1;
                }
                dic[typeInfo.BeloneTextId].listDeviceKeys.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device));
ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs
@@ -291,7 +291,7 @@
                    var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                    //获取图片
                    Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref unSelectPath, ref selectPath);
                    Common.LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo.ConcreteType, ref unSelectPath, ref selectPath);
                    if (dicRoomData.ContainsKey(typeInfo.BeloneTextId) == false)
                    {
                        dicRoomData[typeInfo.BeloneTextId] = new uRowInformation();
ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
@@ -108,7 +108,12 @@
        /// 0:设备不在线
        /// <para>1:设备在线</para>
        /// </summary>
        public int IsOnline;
        public int IsOnline;
        /// <summary>
        /// 1:路由设备
        /// <para>2:终端设备,电池设备</para>
        /// </summary>
        public int ZigbeeType;
        /// <summary>
        /// 当前运行程序版本信息。 最大64字节
        /// </summary>
@@ -376,6 +381,11 @@
                    //新风 
                    IconPath = "Device/FreshAirEpoint.png";
                }
                else if (this.Type == DeviceType.PMSensor)
                {
                    //PM2.5空气质量传感器
                    IconPath = "Device/AirQualitySensorEpoint.png";
                }
                else if (this.Type == DeviceType.FreshAirHumiditySensor)
                {
                    //湿度传感器
ZigbeeApp/Shared/Phone/ZigBee/Device/PMSensor.cs
@@ -11,6 +11,22 @@
        public PMSensor()
        {
            this.Type = DeviceType.PMSensor;
        }
        }
        /// <summary>
        /// 当前温度
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int currentTemperature = 0;
        /// <summary>
        /// 当前湿度
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int currentHumidity = 0;
        /// <summary>
        /// 当前PM2.5值
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int currentPmData = 0;
    }
}
ZigbeeApp/Shared/R.cs
@@ -570,6 +570,14 @@
        /// 自动模式不支持操作
        /// </summary>
        public const int AutoModeForbiddenOperate = 314;
        /// <summary>
        /// 空气质量
        /// </summary>
        public const int AirQuality = 315;
        /// <summary>
        /// 空气质量传感器
        /// </summary>
        public const int AirQualitySensor = 316;
        public readonly static int cancel = 5097;
        public readonly static int confrim = 5098;
@@ -6241,6 +6249,10 @@
        /// 自定义设备所属ID为2310的翻译名字:新风
        /// </summary>
        public const int uDeviceBelongId2310 = 40018;
        /// <summary>
        /// 自定义设备所属ID为1307的翻译名字:空气质量
        /// </summary>
        public const int uDeviceBelongId1307 = 40019;
        //★★★★模块ID的设备默认备注名字,从50000开始,这里不需要定义,只写在Language.ini文件里面★★★★
        //★★★★模块ID的设备类型名字,从60000开始,这里不需要定义,只写在Language.ini文件里面★★★★
ZigbeeApp/Shared/Shared.projitems
@@ -29,6 +29,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceCurtainRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceDoorLockRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceFreshAirRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DevicePmSensorRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceRelayRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceSensorRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceTemperatureRowControl.cs" />
@@ -96,6 +97,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceColorLightDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceCurtainDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceFreshAirDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DevicePmSensorDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceRelayDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\Controls\DeviceCard\DeviceFreshAirCardControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\Controls\DeviceFunctionUnallocatedControl.cs" />