HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-29 9a4629512ccf8359efd88671c9317c3cc7faf0c8
Merge branch 'dev' into dev-temp
25个文件已添加
7个文件已删除
14个文件已修改
5944 ■■■■■ 已修改文件
ZigbeeApp/DroidLib/DroidLib.csproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/DroidLib/Jars/jcore-android-1.2.7.jar 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/DroidLib/Jars/jpush-android-3.2.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Application.cs 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/agconnect-services.json 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/FengLinVideo/Forms/MonitorFragment.cs 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/FengLinVideo/Forms/ReverseCallFragment.cs 309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/FengLinVideo/Interface/VideoState.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/FengLinVideo/widget/TipDiaglog.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/JPush/JPushFirmBroadcast.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/JPush/JPushOpenClickActivity.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/JPush/JPushService.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/JPush/JpushNotificationReceiver.cs 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs 3152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Resources/values/Styles.xml 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Resources/xml/network_security_config.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/VideoActivity.cs 390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/packages.config 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.sln 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Additions/AboutAdditions.txt 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Jars/AboutJars.txt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Jars/sphonelibs-release.aar 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Properties/AssemblyInfo.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/SPhoneLib.csproj 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Transforms/EnumFields.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Transforms/EnumMethods.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/SPhoneLib/Transforms/Metadata.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Additions/AboutAdditions.txt 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/HmsContentProvider.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/HmsLazyInputStream.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Jars/AboutJars.txt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Jars/android_jpush_fcm_4.5.0.aar 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Properties/AssemblyInfo.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Shared.Droid.JPush.csproj 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Shared.Droid.JPush.sln 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Transforms/EnumFields.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Transforms/EnumMethods.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared.Droid.JPush/Transforms/Metadata.xml 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/SendDataToServer.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/VideoPhone/ESVideo.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/DroidLib/DroidLib.csproj
old mode 100755 new mode 100644
@@ -55,8 +55,6 @@
  </ItemGroup>
  <ItemGroup>
    <EmbeddedJar Include="Jars\android-viewbadger.jar" />
    <EmbeddedJar Include="Jars\jcore-android-1.2.7.jar" />
    <EmbeddedJar Include="Jars\jpush-android-3.2.0.jar" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
</Project>
ZigbeeApp/DroidLib/Jars/jcore-android-1.2.7.jar
Binary files differ
ZigbeeApp/DroidLib/Jars/jpush-android-3.2.0.jar
Binary files differ
ZigbeeApp/GateWay.Droid/Application.cs
old mode 100755 new mode 100644
@@ -17,7 +17,8 @@
using Com.Tencent.MM.Sdk.Openapi;
using ZXing.Mobile;
using System.IO;
using GateWay.Droid.JPush;
namespace com.hdl.home
{
    [Activity(Name = "com.hdl.home.wxapi.WXEntryActivity", Exported = true, Theme = "@android:style/Theme.Translucent", LaunchMode = Android.Content.PM.LaunchMode.SingleTask)]
@@ -157,19 +158,14 @@
            //取消屏幕常亮
            BaseActivity.KeepScreenON = false;
            //隐藏底部软按键
            BaseActivity.IsHideVirualButtons = true;
            //设置极光调试模式,为false时只打印警告信息
            // System.Console.WriteLine($"AAA : {System.DateTime.Now.ToString()}");
#if Release
            JPushInterface.SetDebugMode(false);
            //保存手机名称到本地文件
            //System.Console.WriteLine($"BBB : {System .DateTime .Now .ToString ()}");
            BaseActivity.IsHideVirualButtons = true;
            JPushInterface.Init(this);
            //System.Console.WriteLine($"CCC : {System.DateTime.Now.ToString()}");
#endif
            //设置极光调试模式,为false时只打印警告信息
            // System.Console.WriteLine($"AAA : {System.DateTime.Now.ToString()}");
            JPushInterface.SetDebugMode(true);
            JPushInterface.Init(this);
            string registration_id = JPushInterface.GetRegistrationID(this);
            BaseActivity.BackKeyAction = () =>
            {
@@ -335,183 +331,8 @@
                }
            }
            return false;
        }
        }
    }
    [BroadcastReceiver(Name = "com.evoyo.home.JpushNotificationReceiver", Exported = false, Enabled = true)]
    [IntentFilter(new string[] { "cn.jpush.android.intent.REGISTRATION",
               "cn.jpush.android.intent.MESSAGE_RECEIVED",
                "cn.jpush.android.intent.NOTIFICATION_RECEIVED",
                "cn.jpush.android.intent.NOTIFICATION_OPENED",
                "cn.jpush.android.intent.CONNECTION"  }, Categories = new string[] { "com.evoyo.home" })]
    public class JpushNotificationReceiver : BroadcastReceiver
    {
        private static string TAG = "JpushNotificationReceiver";
        private NotificationManager nm;
        static string ACTION = "android.intent.action.BOOT_COMPLETED";
        public override void OnReceive(Context context, Intent intent)
        {
            if (nm == null)
            {
                nm = (NotificationManager)context.GetSystemService(Context.NotificationService);
            }
            //base.OnReceive (context, intent);
            try
            {
                Bundle bundle = intent.Extras;
                if (intent.Action == ACTION)
                {
                    //开机自动服务自动启动,PushService是要启动的服务
                    Intent service = new Intent(context, typeof(PushService));
                    context.StartService(service);
                }
                //接收Registration Id
                if (JPushInterface.ActionRegistrationId == intent.Action)
                {
                    string regId = bundle.GetString(JPushInterface.ExtraRegistrationId);
                    if (!string.IsNullOrEmpty(regId))
                    {
                        Shared.Common.Config.Instance.RegistrationID = regId;
                        Shared.Common.Config.Instance.Save();
                    }
#if Release
                    //调试:记录极光ID
                    Shared.Phone.UserCenter.HdlLogLogic.Current.WriteOtherText(Shared.Phone.UserCenter.DirNameResourse.JiguangFile, "receive2:" + regId, false, true);
#endif
                }
                //用户点击打开了通知
                else if (JPushInterface.ActionNotificationOpened == intent.Action)
                {
                    OpenNotification(context, bundle);
                }
                //接受到推送下来的通知
                else if (JPushInterface.ActionNotificationReceived == intent.Action)
                {
                    //int notifactionId = bundle.GetInt(JPushInterface.ExtraNotificationId);
                    ReceivingNotification(context, bundle);
                    //Shared.Common.CommonPage.Instance.SingOut();
                }
                //接收到推送下来的自定义消息
                else if (JPushInterface.ActionMessageReceived == intent.Action)
                {
                    bundle.GetString(JPushInterface.ExtraMessage);
                }
                else
                {
                }
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine("极光推送出错:" + e.Message);
            }
        }
        /// <summary>
        /// 接收消息通知
        /// </summary>
        /// <param name="context">Context.</param>
        /// <param name="bundle">Bundle.</param>
        private void ReceivingNotification(Context context, Bundle bundle)
        {
            String title = bundle.GetString(JPushInterface.ExtraNotificationTitle);
            System.Console.WriteLine(TAG, " title : " + title);
            String message = bundle.GetString(JPushInterface.ExtraAlert);
            System.Console.WriteLine(TAG, "message : " + message);
            String extras = bundle.GetString(JPushInterface.ExtraExtra);
            System.Console.WriteLine(TAG, "extras : " + extras);
            //处理极光消息推送的逻辑函数
            Shared.Phone.UserCenter.HdlJiguangMsgPushLogic.Current.AdjustJiguangMsgPush(title, message, extras);
        }
        /// <summary>
        /// 打开消息显示界面
        /// </summary>
        /// <param name="context">Context.</param>
        /// <param name="bundle">Bundle.</param>
        private void OpenNotification(Context context, Bundle bundle)
        {
            Intent i = new Intent(context, typeof(BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
            i.PutExtras(bundle);
            i.SetFlags(ActivityFlags.NewTask);
            context.StartActivity(i);
            String extras = bundle.GetString(JPushInterface.ExtraExtra);
            //String myValue = "";
            try
            {
                VideoMethod(extras);
                //JSONObject extrasJson = new JSONObject(extras);
                //myValue = extrasJson.OptString("myKey");
            }
            catch (Exception e)
            {
                System.Console.WriteLine(TAG, "Unexpected: extras is not a valid json", e);
                return;
            }
            //if (TYPE_THIS.equals(myValue))
            //{
            //Intent mIntent = new Intent(context, ThisActivity.class);
            //mIntent.putExtras(bundle);
            //mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            //context.startActivity(mIntent);
            //}
            //else if (TYPE_ANOTHER.equals(myValue))
            //{
            //Intent mIntent = new Intent(context, AnotherActivity.class);
            //mIntent.putExtras(bundle);
            //mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            //context.startActivity(mIntent);
            //}
        }
        /// <summary>
        /// android通知栏点击打开可视对讲的方法
        /// </summary>
        /// <param name="hiddenJson">云端推过来的数据</param>
        private void VideoMethod(string hiddenJson)
        {
            var hiddanJson = Newtonsoft.Json.Linq.JObject.Parse(hiddenJson);
            if (hiddanJson == null)
            {
                return;
            }
            var json = Newtonsoft.Json.Linq.JObject.Parse(hiddanJson["HiddanJson"].ToString());
            if (json == null)
            {
                return;
            }
            Shared.Phone.VideoPhone.ESVideoInfo eSVideoInfo = new Shared.Phone.VideoPhone.ESVideoInfo();
            if (json["uuid"].ToString().Contains(","))
            {
                var uuid = json["uuid"].ToString().Split(',');
                eSVideoInfo.ESVideoUUID = uuid[0];
            }
            else
            {
                eSVideoInfo.ESVideoUUID = json["uuid"].ToString();
            }
            eSVideoInfo.DeviceName = Language.StringByID(Shared.R.MyInternationalizationString.theOutdoorUnit);
            eSVideoInfo.ESRoomID = int.Parse(json["roomno"].ToString());
            if (!string.IsNullOrEmpty(json["unitno"].ToString()))
            {
                string str = json["unitno"].ToString();
                string str1 = str.Substring(0, 2).TrimStart('0');
                string str2 = str.Substring(2, 2).TrimStart('0');
                eSVideoInfo.RoomName = str1 + Language.StringByID(Shared.R.MyInternationalizationString.dong) + str2 + Language.StringByID(Shared.R.MyInternationalizationString.unit);
            }
            Shared.Phone.VideoPhone.ESVideo.ShowESvideoVideoIntercom(eSVideoInfo);
        }
    }
}
namespace Shared
@@ -589,5 +410,9 @@
                return stream.ToArray();
            }
        }
    }
}
ZigbeeApp/GateWay.Droid/Assets/agconnect-services.json
New file
@@ -0,0 +1,84 @@
{
    "agcgw":{
        "backurl":"connect-drcn.hispace.hicloud.com",
        "url":"connect-drcn.dbankcloud.cn",
        "websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
        "websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
    },
    "agcgw_all":{
        "CN":"connect-drcn.dbankcloud.cn",
        "CN_back":"connect-drcn.hispace.hicloud.com",
        "DE":"connect-dre.dbankcloud.cn",
        "DE_back":"connect-dre.hispace.hicloud.com",
        "RU":"connect-drru.hispace.dbankcloud.ru",
        "RU_back":"connect-drru.hispace.dbankcloud.cn",
        "SG":"connect-dra.dbankcloud.cn",
        "SG_back":"connect-dra.hispace.hicloud.com"
    },
    "websocketgw_all":{
        "CN":"connect-ws-drcn.hispace.dbankcloud.cn",
        "CN_back":"connect-ws-drcn.hispace.dbankcloud.com",
        "DE":"connect-ws-dre.hispace.dbankcloud.cn",
        "DE_back":"connect-ws-dre.hispace.dbankcloud.com",
        "RU":"connect-ws-drru.hispace.dbankcloud.ru",
        "RU_back":"connect-ws-drru.hispace.dbankcloud.cn",
        "SG":"connect-ws-dra.hispace.dbankcloud.cn",
        "SG_back":"connect-ws-dra.hispace.dbankcloud.com"
    },
    "client":{
        "cp_id":"2850086000428177029",
        "product_id":"99536292102360529",
        "client_id":"909271942853316096",
        "client_secret":"04B947A6C65528311BDC8BC4299D34A8CEF4B2220532524E3EE6C8F1E3CAE637",
        "project_id":"99536292102360529",
        "app_id":"103085275",
        "api_key":"DAEDAAywMRP7NwBehUXjRsqrTI3Y2tU2sDZh5OOI4tHdyEud4kdjQrvhjFvWUYx73dyEfKrQVYLpsSpBMuGnUmYQNx+opJNRxfroXw==",
        "package_name":"com.evoyo.home"
    },
    "oauth_client":{
        "client_id":"103085275",
        "client_type":1
    },
    "app_info":{
        "app_id":"103085275",
        "package_name":"com.evoyo.home"
    },
    "service":{
        "analytics":{
            "collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
            "collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com",
            "collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
            "collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
            "collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
            "resource_id":"p1",
            "channel_id":""
        },
        "search":{
            "url":"https://search-drcn.cloud.huawei.com"
        },
        "cloudstorage":{
            "storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn"
        },
        "ml":{
            "mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
        }
    },
    "region":"CN",
    "configuration_version":"3.0",
    "appInfos":[
        {
            "package_name":"com.evoyo.home",
            "client":{
                "app_id":"103085275"
            },
            "app_info":{
                "package_name":"com.evoyo.home",
                "app_id":"103085275"
            },
            "oauth_client":{
                "client_type":1,
                "client_id":"103085275"
            }
        }
    ]
}
ZigbeeApp/GateWay.Droid/FengLinVideo/Forms/MonitorFragment.cs
File was deleted
ZigbeeApp/GateWay.Droid/FengLinVideo/Forms/ReverseCallFragment.cs
File was deleted
ZigbeeApp/GateWay.Droid/FengLinVideo/Interface/VideoState.cs
File was deleted
ZigbeeApp/GateWay.Droid/FengLinVideo/widget/TipDiaglog.cs
File was deleted
ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
@@ -44,6 +44,7 @@
    <AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
    <BundleAssemblies>false</BundleAssemblies>
    <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
    <AndroidKeyStore></AndroidKeyStore>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
@@ -63,6 +64,8 @@
    <BundleAssemblies>false</BundleAssemblies>
    <AndroidDexTool>d8</AndroidDexTool>
    <AndroidUseAapt2>false</AndroidUseAapt2>
    <AndroidKeyStore></AndroidKeyStore>
    <AndroidSigningKeyStore>/Users/liaoshaosheng/Desktop/证书/Evoyo Home.keystore</AndroidSigningKeyStore>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="LeakCanary, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
@@ -73,24 +76,6 @@
    </Reference>
    <Reference Include="LeakCanary.Watcher, Version=1.5.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\LeakCanaryBinding.1.5.1.1\lib\MonoAndroid10\LeakCanary.Watcher.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AppCenter.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Analytics, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AppCenter.Analytics.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Analytics.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Analytics.Android.Bindings, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AppCenter.Analytics.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Analytics.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Android.Bindings, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AppCenter.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Crashes, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AppCenter.Crashes.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Crashes.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Crashes.Android.Bindings, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AppCenter.Crashes.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Crashes.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Shared.Droid">
      <HintPath>..\Shared\DLL\Android\Shared.Droid.dll</HintPath>
@@ -119,30 +104,6 @@
    </Reference>
    <Reference Include="System.IO.Compression" />
    <Reference Include="System.Net.Http" />
    <Reference Include="MQTTnet">
      <HintPath>..\packages\MQTTnet.3.0.8\lib\netstandard2.0\MQTTnet.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Android.Bindings">
      <HintPath>..\packages\Microsoft.AppCenter.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter">
      <HintPath>..\packages\Microsoft.AppCenter.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Crashes.Android.Bindings">
      <HintPath>..\packages\Microsoft.AppCenter.Crashes.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Crashes.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Crashes">
      <HintPath>..\packages\Microsoft.AppCenter.Crashes.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Crashes.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Analytics.Android.Bindings">
      <HintPath>..\packages\Microsoft.AppCenter.Analytics.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Analytics.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Analytics">
      <HintPath>..\packages\Microsoft.AppCenter.Analytics.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Analytics.dll</HintPath>
    </Reference>
    <Reference Include="testLibs">
      <HintPath>..\Shared\DLL\Android\testLibs.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Arch.Core.Common">
      <HintPath>..\Shared\DLL\Android\Xamarin.Android.Arch.Core.Common.dll</HintPath>
    </Reference>
@@ -188,6 +149,27 @@
    <Reference Include="Xamarin.Android.Support.Vector.Drawable">
      <HintPath>..\Shared\DLL\Android\Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Android.Bindings">
      <HintPath>..\packages\Microsoft.AppCenter.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter">
      <HintPath>..\packages\Microsoft.AppCenter.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Analytics.Android.Bindings">
      <HintPath>..\packages\Microsoft.AppCenter.Analytics.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Analytics.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Analytics">
      <HintPath>..\packages\Microsoft.AppCenter.Analytics.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Analytics.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Crashes.Android.Bindings">
      <HintPath>..\packages\Microsoft.AppCenter.Crashes.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Crashes.Android.Bindings.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AppCenter.Crashes">
      <HintPath>..\packages\Microsoft.AppCenter.Crashes.1.14.0\lib\MonoAndroid403\Microsoft.AppCenter.Crashes.dll</HintPath>
    </Reference>
    <Reference Include="MQTTnet">
      <HintPath>..\packages\MQTTnet.3.0.8\lib\netstandard2.0\MQTTnet.dll</HintPath>
    </Reference>
    <Reference Include="BouncyCastle.Crypto">
      <HintPath>..\packages\BouncyCastle.1.8.1\lib\BouncyCastle.Crypto.dll</HintPath>
    </Reference>
@@ -206,15 +188,14 @@
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Application.cs" />
    <Compile Include="FengLinVideo\Forms\MonitorFragment.cs" />
    <Compile Include="FengLinVideo\Forms\ReverseCallFragment.cs" />
    <Compile Include="FengLinVideo\Interface\VideoState.cs" />
    <Compile Include="FengLinVideo\widget\TipDiaglog.cs" />
    <Compile Include="Resources\Resource.designer.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="VideoActivity.cs" />
    <Compile Include="ZXing\ZXingCustomScanView.cs" />
    <Compile Include="ZXing\ZXingOverlayView.cs" />
    <Compile Include="JPush\JPushFirmBroadcast.cs" />
    <Compile Include="JPush\JPushOpenClickActivity.cs" />
    <Compile Include="JPush\JpushNotificationReceiver.cs" />
    <Compile Include="JPush\JPushService.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="app.config" />
@@ -224,6 +205,8 @@
    <None Include="Properties\AndroidManifest.xml">
      <SubType>Designer</SubType>
    </None>
    <AndroidAsset Include="Assets\Phone\Center\FaceManagement.png" />
    <AndroidAsset Include="Assets\agconnect-services.json" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\layout\Main.axml" />
@@ -360,6 +343,10 @@
      </SubType>
      <Generator>
      </Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\xml\network_security_config.xml">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
  </ItemGroup>
  <ItemGroup>
@@ -2717,6 +2704,17 @@
      <Project>{930FE62C-60E3-4AB6-8645-CAD9E33ADC45}</Project>
      <Name>AndriodBluetooth</Name>
    </ProjectReference>
    <ProjectReference Include="..\SPhoneLib\SPhoneLib.csproj">
      <Project>{A6CA3387-58A7-4819-992F-C800C8839AFB}</Project>
      <Name>SPhoneLib</Name>
    </ProjectReference>
    <ProjectReference Include="..\Shared.Droid.JPush\Shared.Droid.JPush.csproj">
      <Project>{06B9C874-B9B2-4417-8280-B321F966E46B}</Project>
      <Name>Shared.Droid.JPush</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <Folder Include="JPush\" />
  </ItemGroup>
  <Import Project="..\Shared\Shared.projitems" Label="Shared" Condition="Exists('..\Shared\Shared.projitems')" />
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
ZigbeeApp/GateWay.Droid/JPush/JPushFirmBroadcast.cs
New file
@@ -0,0 +1,57 @@

using Android.Content;
using System;
using CN.Jpush.Android.Api;
using GateWay.Droid.JPush;
using com.hdl.home;
using Android.OS;
namespace HDL_ON_Android
{
    [BroadcastReceiver(Enabled = true, Exported = false, Name = "com.evoyo.home.JPushFirmBroadcast")]
    [Android.App.IntentFilter(new string[]
    {
        "com.evoyo.home.jpush.firm.NOTIFICATION_OPENED"
    },
     Categories = new string[]
    {
        Intent.CategoryDefault
    })]
    class JPushFirmBroadcast : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            /* 用来接收厂商点击通知消息,需要打开MainActivity 需要自行调用
             cn.jpush.android.EXTRA,cn.jpush.android.MSG_ID,
             cn.jpush.android.TYPE_PLATFORM,
            cn.jpush.android.TITLE,
            cn.jpush.android.MESSAGE*/
            try
            {
                NotificationMessage notificationMessage = new NotificationMessage();
                string extra = intent.GetStringExtra(JPushInterface.ExtraExtra);
                string msgId = intent.GetStringExtra(JPushInterface.ExtraMsgId);
                string message = intent.GetStringExtra(JPushInterface.ExtraMessage);
                string title = intent.GetStringExtra(JPushInterface.ExtraTitle);
                //  String typePlatform = intent.GetStringExtra(JPushInterface.ExtraTypePlatform);
                notificationMessage.NotificationTitle = title;
                notificationMessage.NotificationContent = message;
                notificationMessage.NotificationExtras = extra;
                JpushNotificationReceiver.OpenNotification(context, extra);
            }
            catch
            {
            }
        }
    }
}
ZigbeeApp/GateWay.Droid/JPush/JPushOpenClickActivity.cs
New file
@@ -0,0 +1,48 @@
using Android.App;
using Android.Content;
using Android.OS;
using Com.Hdl.ON.Jpush.Androidjpush;
using Android.Views;
namespace HDL_ON_Android
{
    [Activity( Exported = true, Enabled = true, Name = "com.evoyo.home.JPushOpenClickActivity"
        , Theme = "@android:style/Theme.Translucent.NoTitleBar")]
    [IntentFilter(new string[] { "com.evoyo.home.JPushOpenClickActivity", Intent.ActionView },
         Categories = new string[] {  "com.evoyo.home",Intent.CategoryDefault })]
    public class JPushOpenClickActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            View v = new View(this);
            SetContentView(v);
            HandleOpenClick(Intent);
        }
        protected void HandleOpenClick(Intent intent)
        {
            Intent broadcastIntent = new Intent();
            broadcastIntent.SetAction("com.evoyo.home.jpush.firm.NOTIFICATION_OPENED");
            ComponentName componentName = new ComponentName(PackageName, "com.evoyo.home.JPushFirmBroadcast");
            if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
            {
                broadcastIntent.SetComponent(componentName);
            }
            FirmOpenClickHelper.Instance.HandleOpenClick(this, intent, broadcastIntent);
            Finish();
        }
        protected override void OnNewIntent(Intent intent)
        {
            base.OnNewIntent(intent);
            HandleOpenClick(intent);
        }
    }
}
ZigbeeApp/GateWay.Droid/JPush/JPushService.cs
New file
@@ -0,0 +1,11 @@
using System;
using CN.Jpush.Android.Service;
namespace GateWay.Droid.JPush
{
    [Android.App.Service(Enabled = true, Exported = true, Process = ":pushcore")]
    [Android.App.IntentFilter(new string[] { "cn.jiguang.user.service.action" })]
    public class JPushService: JCommonService
    {
    }
}
ZigbeeApp/GateWay.Droid/JPush/JpushNotificationReceiver.cs
New file
@@ -0,0 +1,164 @@
using System;
using Android.App;
using Android.Content;
using Android.OS;
using CN.Jpush.Android.Api;
using CN.Jpush.Android.Service;
using Shared;
using static Shared.Common.SendDataToServer;
namespace GateWay.Droid.JPush
{
    [BroadcastReceiver(Enabled = true, Exported = false)]
    [IntentFilter(new string[]
    {
        "cn.jpush.android.intent.RECEIVE_MESSAGE"
    },
    Categories = new string[]
    {
        "com.evoyo.home"
    })]
    public class JpushNotificationReceiver : JPushMessageReceiver
    {
        private static string TAG = "JpushNotificationReceiver";
        private NotificationManager nm;
        static string ACTION = "android.intent.action.BOOT_COMPLETED";
        /// <summary>
        /// 用户点击打开了通知
        /// 点击通知回调
        /// </summary>
        /// <param name="context"></param>
        /// <param name="notificationMessage"></param>
        public override void OnNotifyMessageOpened(Context context, NotificationMessage notificationMessage)
        {
            //2020-12-23 解决点击通知栏打开不了APP问题
            var pushMes = new JPushMessageInfo()
            {
                Title = notificationMessage.NotificationTitle,
                Content = notificationMessage.NotificationContent,
                Extras = notificationMessage.NotificationExtras
            };
            OpenNotification(context, pushMes.Extras);
        }
        /// <summary>
        /// 收到通知回调
        /// </summary>
        /// <param name="p0"></param>
        /// <param name="p1"></param>
        public override void OnNotifyMessageArrived(Context context, NotificationMessage notificationMessage)
        {
            base.OnNotifyMessageArrived(context, notificationMessage);
            var pushMes = new JPushMessageInfo()
            {
                Title = notificationMessage.NotificationTitle,
                Content = notificationMessage.NotificationContent,
                Extras = notificationMessage.NotificationExtras
            };
            var jpushExpandData = GetJPushExpandData(pushMes);
            if (jpushExpandData != null && jpushExpandData.messageType != null)
            {
                pushMes.messageType = jpushExpandData.messageType;
                pushMes.expantContent = jpushExpandData.expantContent;
                pushMes.HomeId = jpushExpandData.homeId;
            }
            ReceivingNotification(context, pushMes.Title, pushMes.Content, pushMes.Extras);
        }
        /// <summary>
        /// 自定义通知
        /// </summary>
        /// <param name="p0"></param>
        /// <param name="p1"></param>
        public override void OnMessage(Context p0, CustomMessage p1)
        {
            base.OnMessage(p0, p1);
        }
        /// <summary>
        /// 注册成功回调
        /// </summary>
        /// <param name="p0"></param>
        /// <param name="p1"></param>
        public override void OnRegister(Context context, string regId)
        {
            base.OnRegister(context, regId);
            Shared.Common.Config.Instance.RegistrationID = regId;
            Shared.Common.Config.Instance.Save();
            Shared.Phone.UserCenter.HdlLogLogic.Current.WriteOtherText(Shared.Phone.UserCenter.DirNameResourse.JiguangFile, "receive2:" + regId, false, true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pushMes"></param>
        /// <returns></returns>
        static ExpandData GetJPushExpandData(JPushMessageInfo pushMes)
        {
            try
            {
                if (pushMes.Extras != null)
                {
                    var jpushExpandData = Newtonsoft.Json.JsonConvert.DeserializeObject<JPushExpandData>(pushMes.Extras.ToString());
                    return Newtonsoft.Json.JsonConvert.DeserializeObject<ExpandData>(jpushExpandData.expandData);
                }
                return null;
            }
            catch
            {
                return null;
            }
        }
        /// <summary>
        /// 接收消息通知
        /// </summary>
        /// <param name="context">Context.</param>
        /// <param name="bundle">Bundle.</param>
        private static void ReceivingNotification(Context context, string title, string message, string extras)
        {
            System.Console.WriteLine(TAG, " title : " + title);
            System.Console.WriteLine(TAG, "message : " + message);
            System.Console.WriteLine(TAG, "extras : " + extras);
            //处理极光消息推送的逻辑函数
            Shared.Phone.UserCenter.HdlJiguangMsgPushLogic.Current.AdjustJiguangMsgPush(title, message, extras);
        }
        /// <summary>
        /// 打开消息显示界面
        /// </summary>
        /// <param name="context">Context.</param>
        /// <param name="bundle">Bundle.</param>
        public static void OpenNotification(Context context, string extras)
        {
            Intent i = new Intent(context, typeof(BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
            i.SetFlags(ActivityFlags.NewTask);
            context.StartActivity(i);
            try
            {
                VideoMethod(extras);
            }
            catch (Exception e)
            {
                System.Console.WriteLine(TAG, "Unexpected: extras is not a valid json", e);
                return;
            }
        }
        /// <summary>
        /// android通知栏点击打开可视对讲的方法
        /// </summary>
        /// <param name="hiddenJson">云端推过来的数据</param>
        private static void VideoMethod(string hiddenJson)
        {
            Com.Evoyohome.Sphonelibs.Global.Global.OpenCallActivity(null);
        }
    }
}
ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.evoyo.home" android:versionCode="0121011401" android:installLocation="auto" android:versionName="1.1.0121011401">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.evoyo.home" android:versionCode="0122082601" android:installLocation="auto" android:versionName="1.1.0122082601">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26" />
    <permission android:name="com.evoyo.home.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!--8.0权限-->
@@ -97,22 +97,22 @@
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <!-- 极光推送结束 -->
    <application android:allowBackup="true" android:largeHeap="true" android:persistent="true" android:label="Evoyo Home" android:icon="@drawable/Icon">
    <application android:allowBackup="true" android:largeHeap="true" android:persistent="true" android:label="Evoyo Home" android:icon="@drawable/Icon" android:networkSecurityConfig="@xml/network_security_config">
        <!-- 自动更新 -->
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.evoyo.home.fileProvider" android:grantUriPermissions="true" android:exported="false">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
        </provider>
        <!--自动更新结束-->
        <!-- 设置高德地图key -->
        <meta-data android:name="com.amap.api.v2.apikey" android:value="9901dd06e30b229efdd4c5bf5e076224" />
        <!--  </>值来自开发者平台取得的AppKey-->
        <!-- 设置高德地图key -->
        <meta-data android:name="com.amap.api.v2.apikey" android:value="f78f951092602db3962811e736758559" />
        <!--极光推送-->
        <activity android:name="cn.jpush.android.ui.PopWinActivity" android:exported="false" />
        <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar" android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.ui.PushActivity" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.evoyo.home" />
            </intent-filter>
        </activity>
        <service android:name="cn.jpush.android.service.PushService" android:process=":mult">
        <provider android:name="Shared.Droid.JPush.HmsContentProvider" android:authorities="${applicationId}.hmspushprovider" android:exported="false"></provider>
        <!-- Required SDK 核心功能-->
        <!-- 可配置 android:process 参数将 PushService 放在其他进程中 -->
        <service android:name="cn.jpush.android.service.PushService" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.REGISTER" />
                <action android:name="cn.jpush.android.intent.REPORT" />
@@ -121,8 +121,10 @@
            </intent-filter>
        </service>
        <!-- since 3.0.9 Required SDK 核心功能-->
        <provider android:authorities="com.evoyo.home.DataProvider" android:name="cn.jpush.android.service.DataProvider" android:process=":pushcore" android:exported="false" />
        <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true">
        <provider android:authorities="com.evoyo.home.DataProvider" android:name="cn.jpush.android.service.DataProvider" android:exported="true" />
        <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的 JPush 服务相互拉起的功能。 -->
        <!-- 若不启用该功能可删除该组件,或把 enabled 设置成 false ;App 不会被其他 App 拉起,但会拉起其他的 App。 -->
        <service android:name="cn.jpush.android.service.DaemonService" android:enabled="false" android:exported="true">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.DaemonService" />
                <category android:name="com.evoyo.home" />
@@ -130,6 +132,7 @@
        </service>
        <!-- since 3.1.0 Required SDK 核心功能-->
        <provider android:authorities="com.evoyo.home.DownloadProvider" android:name="cn.jpush.android.service.DownloadProvider" android:exported="true" />
        <!-- Required SDK 核心功能-->
        <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true">
            <intent-filter android:priority="1000">
                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
@@ -146,14 +149,58 @@
                <data android:scheme="package" />
            </intent-filter>
        </receiver>
        <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false" />
        <!-- User defined.  For test only  用户自定义的广播接收器-->
        <!-- Required  . Enable it you can get statistics data with channel -->
        <!-- Required SDK 核心功能-->
        <!-- 若您的业务中有使用极光富媒体功能,或者极光早上好功能,需要把此 Activity 的 exported 设置成 true。 -->
        <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar" android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.ui.PushActivity" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.evoyo.home" />
            </intent-filter>
        </activity>
        <!-- SDK 核心功能-->
        <!-- 若您的业务中有使用极光富媒体功能,或者极光早上好功能,需要把此 Activity 的 exported 设置成 true。 -->
        <activity android:name="cn.jpush.android.ui.PopWinActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:theme="@style/DialogTheme">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.evoyo.home" />
            </intent-filter>
        </activity>
        <!-- since 3.6.0 -->
        <activity android:name="cn.jpush.android.service.DActivity" android:enabled="true" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:taskAffinity="jpush.custom">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.DActivity" />
                <category android:name="com.evoyo.home" />
            </intent-filter>
        </activity>
        <!-- Required SDK 核心功能-->
        <receiver android:name="cn.jpush.android.service.AlarmReceiver" />
        <!-- 3.5.0新增,用于定时展示功能 -->
        <receiver android:name="cn.jpush.android.service.SchedulerReceiver" android:exported="false" />
        <!--Required SDK核心功能 since 3.3.0-->
        <activity android:name="cn.jpush.android.service.JNotifyActivity" android:exported="true" android:taskAffinity="jpush.custom" android:theme="@android:style/Theme.Translucent.NoTitleBar">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.JNotifyActivity" />
                <category android:name="com.evoyo.home" />
            </intent-filter>
        </activity>
        <!-- Required. For publish channel feature -->
        <!-- JPUSH_CHANNEL 是为了方便开发者统计 APK 分发渠道。-->
        <!-- 例如: -->
        <!-- 发到 Google Play 的 APK 可以设置为 google-play; -->
        <!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
        <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
        <!-- Required. AppKey copied from Portal -->
        <meta-data android:name="JPUSH_APPKEY" android:value="07cfd3177490173e7c072f49" />
        <!--  </>值来自开发者平台取得的AppKey-->
        <!--小米-->
        <meta-data android:name="XIAOMI_APPID" android:value="MI-2882303761518736008" />
        <meta-data android:name="XIAOMI_APPKEY" android:value="MI-5261873610008" />
        <meta-data android:name="XIAOMI_AppSecret" android:value="MI-mlKUjKABHKs0P7SZsRggiQ==" />
        <!--OPPO-->
        <meta-data android:name="OPPO_APPID" android:value="OP-30396771" />
        <meta-data android:name="OPPO_APPSECRET" android:value="OP-b7d4d96584164fda88dc53c5aaa58132" />
        <meta-data android:name="OPPO_APPKEY" android:value="OP-c75e887071964eb3967fc9b3a0e4fab9" />
        <meta-data android:name="OPPO_MasterSecret" android:value="ffde26276e604358a5c605d2d06b7ce3" />
        <!-- 极光推送结束 -->
        <!-- 设置高德地图key -->
        <meta-data android:name="com.amap.api.v2.apikey" android:value="f78f951092602db3962811e736758559" />
    </application>
</manifest>
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
Diff too large
ZigbeeApp/GateWay.Droid/Resources/values/Styles.xml
old mode 100755 new mode 100644
ZigbeeApp/GateWay.Droid/Resources/xml/network_security_config.xml
New file
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
ZigbeeApp/GateWay.Droid/VideoActivity.cs
File was deleted
ZigbeeApp/GateWay.Droid/packages.config
@@ -3,9 +3,9 @@
  <package id="BouncyCastle" version="1.8.1" targetFramework="monoandroid80" />
  <package id="FastAndroidCamera" version="2.0.0" targetFramework="monoandroid80" />
  <package id="LeakCanaryBinding" version="1.5.1.1" targetFramework="monoandroid80" />
  <package id="Microsoft.AppCenter" version="1.14.0" targetFramework="monoandroid60" />
  <package id="Microsoft.AppCenter.Analytics" version="1.14.0" targetFramework="monoandroid60" />
  <package id="Microsoft.AppCenter.Crashes" version="1.14.0" targetFramework="monoandroid60" />
  <package id="Microsoft.AppCenter" version="1.14.0" targetFramework="monoandroid80" />
  <package id="Microsoft.AppCenter.Analytics" version="1.14.0" targetFramework="monoandroid80" />
  <package id="Microsoft.AppCenter.Crashes" version="1.14.0" targetFramework="monoandroid80" />
  <package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="monoandroid60" />
  <package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="monoandroid60" />
  <package id="MQTTnet" version="3.0.8" targetFramework="monoandroid80" />
ZigbeeApp/GateWay.sln
@@ -8,9 +8,15 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GateWay.Droid", "GateWay.Droid\GateWay.Droid.csproj", "{28EDE1FF-20EF-476B-8AF8-24A3EEB69F45}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Home.IOS", "Home.Ios\Home.IOS.csproj", "{F1296E2C-3777-4385-85B2-DA77617E3178}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPhoneLib", "SPhoneLib\SPhoneLib.csproj", "{A6CA3387-58A7-4819-992F-C800C8839AFB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EzvizLib.ios", "..\..\..\HDLDemo\全视通\EzvizLib.ios\EzvizLib.ios.csproj", "{25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}"
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "EzvizLib.ios", "..\..\..\HDLDemo\全视通\EzvizLib.ios\EzvizLib.ios.csproj", "{91139C9E-B674-417A-B99B-1381705D83F3}"
EndProject
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Elian.iOS", "Elian.iOS\Elian.iOS.csproj", "{1AA155B7-E058-493A-B374-CCD32DFE953F}"
EndProject
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Home.IOS", "Home.Ios\Home.IOS.csproj", "{0E10B7DE-15DA-4F8A-9CD0-798AB174603D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.Droid.JPush", "Shared.Droid.JPush\Shared.Droid.JPush.csproj", "{06B9C874-B9B2-4417-8280-B321F966E46B}"
EndProject
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "AndriodBluetooth", "AndriodBluetooth\AndriodBluetooth.csproj", "{BCCD05A7-CC25-4541-8262-2195E27EEB6B}"
EndProject
@@ -54,54 +60,66 @@
        {28EDE1FF-20EF-476B-8AF8-24A3EEB69F45}.Release|iPhone.Build.0 = Release|Any CPU
        {28EDE1FF-20EF-476B-8AF8-24A3EEB69F45}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {28EDE1FF-20EF-476B-8AF8-24A3EEB69F45}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Debug|iPhone.ActiveCfg = Debug|iPhone
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Debug|iPhone.Build.0 = Debug|iPhone
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Release|iPhone.ActiveCfg = Release|iPhone
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Release|iPhone.Build.0 = Release|iPhone
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
        {F1296E2C-3777-4385-85B2-DA77617E3178}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Debug|iPhone.Build.0 = Debug|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Release|Any CPU.Build.0 = Release|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Release|iPhone.ActiveCfg = Release|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Release|iPhone.Build.0 = Release|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {25AE4CD7-C9E2-42FE-B7D6-80E76BA13491}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Debug|iPhone.Build.0 = Debug|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Release|Any CPU.Build.0 = Release|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Release|iPhone.ActiveCfg = Release|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Release|iPhone.Build.0 = Release|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {BCCD05A7-CC25-4541-8262-2195E27EEB6B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Debug|iPhone.Build.0 = Debug|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Release|Any CPU.Build.0 = Release|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Release|iPhone.ActiveCfg = Release|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Release|iPhone.Build.0 = Release|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {897BFC2B-5945-4FBB-AC18-64496ADA2C50}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Debug|iPhone.Build.0 = Debug|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Release|Any CPU.Build.0 = Release|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Release|iPhone.ActiveCfg = Release|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Release|iPhone.Build.0 = Release|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {A6CA3387-58A7-4819-992F-C800C8839AFB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Debug|iPhone.Build.0 = Debug|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Release|Any CPU.Build.0 = Release|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Release|iPhone.ActiveCfg = Release|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Release|iPhone.Build.0 = Release|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {91139C9E-B674-417A-B99B-1381705D83F3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Debug|iPhone.Build.0 = Debug|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Release|Any CPU.Build.0 = Release|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Release|iPhone.ActiveCfg = Release|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Release|iPhone.Build.0 = Release|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {1AA155B7-E058-493A-B374-CCD32DFE953F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Debug|iPhone.ActiveCfg = Debug|iPhone
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Debug|iPhone.Build.0 = Debug|iPhone
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Release|iPhone.ActiveCfg = Release|iPhone
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Release|iPhone.Build.0 = Release|iPhone
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
        {0E10B7DE-15DA-4F8A-9CD0-798AB174603D}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|iPhone.Build.0 = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|Any CPU.Build.0 = Release|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|iPhone.ActiveCfg = Release|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|iPhone.Build.0 = Release|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
ZigbeeApp/SPhoneLib/Additions/AboutAdditions.txt
New file
@@ -0,0 +1,48 @@
Additions allow you to add arbitrary C# to the generated classes
before they are compiled.  This can be helpful for providing convenience
methods or adding pure C# classes.
== Adding Methods to Generated Classes ==
Let's say the library being bound has a Rectangle class with a constructor
that takes an x and y position, and a width and length size.  It will look like
this:
public partial class Rectangle
{
    public Rectangle (int x, int y, int width, int height)
    {
        // JNI bindings
    }
}
Imagine we want to add a constructor to this class that takes a Point and
Size structure instead of 4 ints.  We can add a new file called Rectangle.cs
with a partial class containing our new method:
public partial class Rectangle
{
    public Rectangle (Point location, Size size) :
        this (location.X, location.Y, size.Width, size.Height)
    {
    }
}
At compile time, the additions class will be added to the generated class
and the final assembly will a Rectangle class with both constructors.
== Adding C# Classes ==
Another thing that can be done is adding fully C# managed classes to the
generated library.  In the above example, let's assume that there isn't a
Point class available in Java or our library.  The one we create doesn't need
to interact with Java, so we'll create it like a normal class in C#.
By adding a Point.cs file with this class, it will end up in the binding library:
public class Point
{
    public int X { get; set; }
    public int Y { get; set; }
}
ZigbeeApp/SPhoneLib/Jars/AboutJars.txt
New file
@@ -0,0 +1,24 @@
This directory is for Android .jars.
There are 2 types of jars that are supported:
== Input Jar ==
This is the jar that bindings should be generated for.
For example, if you were binding the Google Maps library, this would
be Google's "maps.jar".
Set the build action for these jars in the properties page to "InputJar".
== Reference Jars ==
These are jars that are referenced by the input jar.  C# bindings will
not be created for these jars.  These jars will be used to resolve
types used by the input jar.
NOTE: Do not add "android.jar" as a reference jar.  It will be added automatically
based on the Target Framework selected.
Set the build action for these jars in the properties page to "ReferenceJar".
ZigbeeApp/SPhoneLib/Jars/sphonelibs-release.aar
Binary files differ
ZigbeeApp/SPhoneLib/Properties/AssemblyInfo.cs
New file
@@ -0,0 +1,26 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SPhoneLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SPhoneLib")]
[assembly: AssemblyCopyright("Copyright ©  2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
ZigbeeApp/SPhoneLib/SPhoneLib.csproj
New file
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{A6CA3387-58A7-4819-992F-C800C8839AFB}</ProjectGuid>
    <ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <TemplateGuid>{77efb91c-a7e9-4b0e-a7c5-31eeec3c6d46}</TemplateGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SPhoneLib</RootNamespace>
    <AssemblyName>SPhoneLib</AssemblyName>
    <FileAlignment>512</FileAlignment>
    <Deterministic>True</Deterministic>
    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
    <AndroidClassParser>class-parse</AndroidClassParser>
    <AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>portable</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>portable</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Mono.Android" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Jars\AboutJars.txt" />
    <None Include="Additions\AboutAdditions.txt" />
  </ItemGroup>
  <ItemGroup>
    <TransformFile Include="Transforms\Metadata.xml" />
    <TransformFile Include="Transforms\EnumFields.xml" />
    <TransformFile Include="Transforms\EnumMethods.xml" />
  </ItemGroup>
  <ItemGroup>
    <LibraryProjectZip Include="Jars\sphonelibs-release.aar" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
ZigbeeApp/SPhoneLib/Transforms/EnumFields.xml
New file
@@ -0,0 +1,14 @@
<enum-field-mappings>
  <!--
  This example converts the constants Fragment_id, Fragment_name,
  and Fragment_tag from android.support.v4.app.FragmentActivity.FragmentTag
  to an enum called Android.Support.V4.App.FragmentTagType with values
  Id, Name, and Tag.
  <mapping jni-class="android/support/v4/app/FragmentActivity$FragmentTag" clr-enum-type="Android.Support.V4.App.FragmentTagType">
    <field jni-name="Fragment_name" clr-name="Name" value="0" />
    <field jni-name="Fragment_id" clr-name="Id" value="1" />
    <field jni-name="Fragment_tag" clr-name="Tag" value="2" />
  </mapping>
  -->
</enum-field-mappings>
ZigbeeApp/SPhoneLib/Transforms/EnumMethods.xml
New file
@@ -0,0 +1,13 @@
<enum-method-mappings>
  <!--
  This example changes the Java method:
    android.support.v4.app.Fragment.SavedState.writeToParcel (int flags)
  to be:
    android.support.v4.app.Fragment.SavedState.writeToParcel (Android.OS.ParcelableWriteFlags flags)
  when bound in C#.
  <mapping jni-class="android/support/v4/app/Fragment.SavedState">
    <method jni-name="writeToParcel" parameter="flags" clr-enum-type="Android.OS.ParcelableWriteFlags" />
  </mapping>
  -->
</enum-method-mappings>
ZigbeeApp/SPhoneLib/Transforms/Metadata.xml
New file
@@ -0,0 +1,20 @@
<metadata>
  <!--
  This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
  This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
  -->
  <remove-node path="/api/package[@name='com.sipphone.sdk']/class[@name='LinphoneContact']/implements[@name='Java.Lang.IComparable']" />
  <remove-node path="/api/package[starts-with(@name,'org.linphone')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.evoyohome.sphonelibs.util')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.google.gson.internal.bind')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.google.gson.internal')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.google.gson')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.google.zxing.client.result')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.google.zxing.oned.rss.expanded.decoders')]"/>
  <remove-node path="/api/package[starts-with(@name,'com.sipphone.sdk')]"/>
</metadata>
ZigbeeApp/Shared.Droid.JPush/Additions/AboutAdditions.txt
New file
@@ -0,0 +1,48 @@
Additions allow you to add arbitrary C# to the generated classes
before they are compiled.  This can be helpful for providing convenience
methods or adding pure C# classes.
== Adding Methods to Generated Classes ==
Let's say the library being bound has a Rectangle class with a constructor
that takes an x and y position, and a width and length size.  It will look like
this:
public partial class Rectangle
{
    public Rectangle (int x, int y, int width, int height)
    {
        // JNI bindings
    }
}
Imagine we want to add a constructor to this class that takes a Point and
Size structure instead of 4 ints.  We can add a new file called Rectangle.cs
with a partial class containing our new method:
public partial class Rectangle
{
    public Rectangle (Point location, Size size) :
        this (location.X, location.Y, size.Width, size.Height)
    {
    }
}
At compile time, the additions class will be added to the generated class
and the final assembly will a Rectangle class with both constructors.
== Adding C# Classes ==
Another thing that can be done is adding fully C# managed classes to the
generated library.  In the above example, let's assume that there isn't a
Point class available in Java or our library.  The one we create doesn't need
to interact with Java, so we'll create it like a normal class in C#.
By adding a Point.cs file with this class, it will end up in the binding library:
public class Point
{
    public int X { get; set; }
    public int Y { get; set; }
}
ZigbeeApp/Shared.Droid.JPush/HmsContentProvider.cs
New file
@@ -0,0 +1,58 @@

using Android.Content;
using Android.Database;
using System;
using Huawei.Agconnect.Config;
namespace Shared.Droid.JPush
{
    [ContentProvider(new string[] { "Shared.Droid.JPush.HmsContentProvider" },
        Enabled = true, Exported = false,
        Name = "Shared.Droid.JPush.HmsContentProvider")]
    class HmsContentProvider : ContentProvider
    {
        public override int Delete(Android.Net.Uri uri, string selection, string[] selectionArgs)
        {
            throw new NotImplementedException();
        }
        public override string GetType(Android.Net.Uri uri)
        {
            throw new NotImplementedException();
        }
        public override Android.Net.Uri Insert(Android.Net.Uri uri, ContentValues values)
        {
            throw new NotImplementedException();
        }
        public override bool OnCreate()
        {
            try
            {
                AGConnectServicesConfig config = AGConnectServicesConfig.FromContext(Context);
                config.OverlayWith(new HmsLazyInputStream(Context));
            }
            catch (Exception e)
            {
            }
            return false;
        }
        public override ICursor Query(Android.Net.Uri uri, string[] projection, string selection, string[] selectionArgs, string sortOrder)
        {
            throw new NotImplementedException();
        }
        public override int Update(Android.Net.Uri uri, ContentValues values, string selection, string[] selectionArgs)
        {
            throw new NotImplementedException();
        }
    }
}
ZigbeeApp/Shared.Droid.JPush/HmsLazyInputStream.cs
New file
@@ -0,0 +1,28 @@
using Android.Content;
using Android.Util;
using System;
using System.IO;
using Huawei.Agconnect.Config;
namespace Shared.Droid.JPush
{
    class HmsLazyInputStream : LazyInputStream
    {
        public HmsLazyInputStream(Context context) : base(context)
        {
        }
        public override Stream Get(Context context)
        {
            try
            {
                return context.Assets.Open("agconnect-services.json");
            }
            catch (Exception e)
            {
                Log.Info(e.ToString(), "Can't open agconnect file");
                return null;
            }
        }
    }
}
ZigbeeApp/Shared.Droid.JPush/Jars/AboutJars.txt
New file
@@ -0,0 +1,24 @@
This directory is for Android .jars.
There are 2 types of jars that are supported:
== Input Jar ==
This is the jar that bindings should be generated for.
For example, if you were binding the Google Maps library, this would
be Google's "maps.jar".
Set the build action for these jars in the properties page to "InputJar".
== Reference Jars ==
These are jars that are referenced by the input jar.  C# bindings will
not be created for these jars.  These jars will be used to resolve
types used by the input jar.
NOTE: Do not add "android.jar" as a reference jar.  It will be added automatically
based on the Target Framework selected.
Set the build action for these jars in the properties page to "ReferenceJar".
ZigbeeApp/Shared.Droid.JPush/Jars/android_jpush_fcm_4.5.0.aar
Binary files differ
ZigbeeApp/Shared.Droid.JPush/Properties/AssemblyInfo.cs
New file
@@ -0,0 +1,24 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Shared.Droid.JPush")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Shared.Droid.JPush")]
[assembly: AssemblyCopyright("Copyright ©  2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
ZigbeeApp/Shared.Droid.JPush/Shared.Droid.JPush.csproj
New file
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{06B9C874-B9B2-4417-8280-B321F966E46B}</ProjectGuid>
    <ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <TemplateGuid>{77efb91c-a7e9-4b0e-a7c5-31eeec3c6d46}</TemplateGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Shared.Droid.JPush</RootNamespace>
    <AssemblyName>Shared.Droid.JPush</AssemblyName>
    <FileAlignment>512</FileAlignment>
    <Deterministic>True</Deterministic>
    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
    <AndroidClassParser>class-parse</AndroidClassParser>
    <AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <ReleaseVersion>1.1</ReleaseVersion>
    <SynchReleaseVersion>false</SynchReleaseVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>portable</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>portable</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Mono.Android" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="HmsContentProvider.cs" />
    <Compile Include="HmsLazyInputStream.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Jars\AboutJars.txt" />
    <None Include="Additions\AboutAdditions.txt" />
  </ItemGroup>
  <ItemGroup>
    <TransformFile Include="Transforms\Metadata.xml" />
    <TransformFile Include="Transforms\EnumFields.xml" />
    <TransformFile Include="Transforms\EnumMethods.xml" />
  </ItemGroup>
  <ItemGroup>
    <LibraryProjectZip Include="Jars\android_jpush_fcm_4.5.0.aar" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
ZigbeeApp/Shared.Droid.JPush/Shared.Droid.JPush.sln
New file
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.810.16
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.Droid.JPush", "Shared.Droid.JPush.csproj", "{06B9C874-B9B2-4417-8280-B321F966E46B}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {06B9C874-B9B2-4417-8280-B321F966E46B}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {2D699278-36F8-45AF-8978-2F3B24C3BC7F}
    EndGlobalSection
EndGlobal
ZigbeeApp/Shared.Droid.JPush/Transforms/EnumFields.xml
New file
@@ -0,0 +1,14 @@
<enum-field-mappings>
  <!--
  This example converts the constants Fragment_id, Fragment_name,
  and Fragment_tag from android.support.v4.app.FragmentActivity.FragmentTag
  to an enum called Android.Support.V4.App.FragmentTagType with values
  Id, Name, and Tag.
  <mapping jni-class="android/support/v4/app/FragmentActivity$FragmentTag" clr-enum-type="Android.Support.V4.App.FragmentTagType">
    <field jni-name="Fragment_name" clr-name="Name" value="0" />
    <field jni-name="Fragment_id" clr-name="Id" value="1" />
    <field jni-name="Fragment_tag" clr-name="Tag" value="2" />
  </mapping>
  -->
</enum-field-mappings>
ZigbeeApp/Shared.Droid.JPush/Transforms/EnumMethods.xml
New file
@@ -0,0 +1,13 @@
<enum-method-mappings>
  <!--
  This example changes the Java method:
    android.support.v4.app.Fragment.SavedState.writeToParcel (int flags)
  to be:
    android.support.v4.app.Fragment.SavedState.writeToParcel (Android.OS.ParcelableWriteFlags flags)
  when bound in C#.
  <mapping jni-class="android/support/v4/app/Fragment.SavedState">
    <method jni-name="writeToParcel" parameter="flags" clr-enum-type="Android.OS.ParcelableWriteFlags" />
  </mapping>
  -->
</enum-method-mappings>
ZigbeeApp/Shared.Droid.JPush/Transforms/Metadata.xml
New file
@@ -0,0 +1,188 @@
<metadata>
  <!--
  This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
  This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
  -->
    <!--=======华为======-->
    <!--base-->
    <attr path="/api/package[@name='com.huawei.hms.common.data']/class[@name='DataHolderCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.data']/class[@name='DataHolderCreator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api']/class[@name='ResolvePendingResult']/method[@name='onComplete' and count(parameter)=1 and parameter[1][@type='T']]" name="managedReturn">Java.Lang.Object</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.internal']/class[@name='DialogRedirectImpl']/method[@name='redirect' and count(parameter)=0]" name="visibility">protected</attr>
    <attr path="/api/package[@name='com.huawei.hms.common']/class[@name='FeatureCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
    <attr path="/api/package[@name='com.huawei.hms.common']/class[@name='FeatureCreator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.webserverpic']/class[@name='WebServerPicCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.webserverpic']/class[@name='WebServerPicCreator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
    <remove-node path="/api/package[@name='com.huawei.hms.common.internal']/class[@name='TaskApiCall']/method[@name='doExecute']" />
    <remove-node path="/api/package[@name='com.huawei.hms.common.data']/class[@name='DataHolder']/method[@name='finalize' and count(parameter)=0]" />
    <remove-node path="/api/package[@name='com.huawei.hms.support.api.client']/class[@name='ResolvingResultCallbacks']/method[@name='onSuccess' and count(parameter)=1 and parameter[1][@type='R']]" />
    <attr path="/api/package[@name='com.huawei.hms.support.hianalytics']/class[@name='HiAnalyticsClient']" name="extends">Java.Lang.Object</attr>
    <add-node path="/api/package[@name='com.huawei.hms.support.api.client']/class[@name='ResolvingResultCallbacks']">
        <method name="onSuccess" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
            <parameter name="context" type="java.lang.Object" />
        </method>
    </add-node>
    <add-node path="/api/package[@name='com.huawei.hms.common.data']/class[@name='DBInnerIter']">
        <method name="remove" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" />
    </add-node>
    <!-- Renaming namespaces -->
    <attr path="/api/package[@name='com.huawei.hms.actions']" name="managedName">Huawei.Hms.Actions</attr>
    <attr path="/api/package[@name='com.huawei.hms.activity']" name="managedName">Huawei.Hms.Activity</attr>
    <attr path="/api/package[@name='com.huawei.hms.activity.internal']" name="managedName">Huawei.Hms.Activity.Internal</attr>
    <attr path="/api/package[@name='com.huawei.hms.adapter']" name="managedName">Huawei.Hms.Adapter</attr>
    <attr path="/api/package[@name='com.huawei.hms.adapter.internal']" name="managedName">Huawei.Hms.Adapter.Internal</attr>
    <attr path="/api/package[@name='com.huawei.hms.api']" name="managedName">Huawei.Hms.Api</attr>
    <attr path="/api/package[@name='com.huawei.hms.common']" name="managedName">Huawei.Hms.Common</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.api']" name="managedName">Huawei.Hms.Common.Api</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.api.internal']" name="managedName">Huawei.Hms.Common.Api.Internal</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.data']" name="managedName">Huawei.Hms.Common.Data</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.internal']" name="managedName">Huawei.Hms.Common.Internal</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.internal.safeparcel']" name="managedName">Huawei.Hms.Common.Internal.SafeParcel</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.size']" name="managedName">Huawei.Hms.Common.Size</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.sqlite']" name="managedName">Huawei.Hms.Common.S</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.util']" name="managedName">Huawei.Hms.Common.Util</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.webserverpic']" name="managedName">Huawei.Hms.Common.WebServicePic</attr>
    <attr path="/api/package[@name='com.huawei.hms.core.aidl']" name="managedName">Huawei.Hms.Core.Aidl</attr>
    <attr path="/api/package[@name='com.huawei.hms.core.aidl.annotation']" name="managedName">Huawei.Hms.Core.Aidl.Annotation</attr>
    <attr path="/api/package[@name='com.huawei.hms.security']" name="managedName">Huawei.Hms.Security</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api']" name="managedName">Huawei.Hms.Support.Api</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.client']" name="managedName">Huawei.Hms.Support.Api.Client</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.core']" name="managedName">Huawei.Hms.Support.Api.Core</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.entity.auth']" name="managedName">Huawei.Hms.Support.Api.Entity.Auth</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.entity.core']" name="managedName">Huawei.Hms.Support.Api.Entity.Core</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.transport']" name="managedName">Huawei.Hms.Support.Api.Transport</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.hianalytics']" name="managedName">Huawei.Hms.Support.HiAnalytics</attr>
    <attr path="/api/package[@name='com.huawei.hms.utils']" name="managedName">Huawei.Hms.Utils</attr>
    <!--HmsDevice-->
    <attr path="/api/package[@name='com.huawei.hms.utils']/class[@name='IOUtils']/method[@name='closeQuietly' and count(parameter)=1 and parameter[1][@type='java.io.OutputStream']]" name="managedName">CloseQuietlyOutputStream</attr>
    <attr path="/api/package[@name='com.huawei.hms.utils']/class[@name='IOUtils']/method[@name='closeQuietly' and count(parameter)=1 and parameter[1][@type='java.io.InputStream']]" name="managedName">CloseQuietlyInputStream</attr>
    <attr path="/api/package[@name='com.huawei.hms.android']" name="managedName">Huawei.Hms.Android</attr>
    <attr path="/api/package[@name='com.huawei.hms.base.device']" name="managedName">Huawei.Hms.Base.Device</attr>
    <attr path="/api/package[@name='com.huawei.hms.common']" name="managedName">Huawei.Hms.Common</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.internal']" name="managedName">Huawei.Hms.Common.Internal</attr>
    <attr path="/api/package[@name='com.huawei.hms.common.util']" name="managedName">Huawei.Hms.Common.Util</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.gentyref']" name="managedName">Huawei.Hms.Support.Gentyref</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.log.common']" name="managedName">Huawei.Hms.Support.Log.Common</attr>
    <attr path="/api/package[@name='com.huawei.hms.utils']" name="managedName">Huawei.Hms.Utils</attr>
    <attr path="/api/package[@name='com.huawei.hms.utils.a']" name="managedName">Huawei.Hms.Utils.A</attr>
    <!--HmsOpenDevice-->
    <attr path="/api/package[@name='com.huawei.hms.opendevice']/class[@name='OpenDeviceHmsClientBuilder']/method[@name='buildClient']" name="managedReturn">Java.Lang.Object</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.task']/class[@name='PushClientBuilder']/method[@name='buildClient']" name="managedReturn">Java.Lang.Object</attr>
    <remove-node path="/api/package[@name='com.huawei.hms.opendevice']/class[@name='OpenDeviceTaskApiCall']"/>
    <attr path="/api/package[@name='com.huawei.hms.aaid']" name="managedName">Huawei.Hms.Aaid</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.constant']" name="managedName">Huawei.Hms.Aaid.Constant</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.encrypt']" name="managedName">Huawei.Hms.Aaid.Encrypt</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.entity']" name="managedName">Huawei.Hms.Aaid.Entity</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.init']" name="managedName">Huawei.Hms.Aaid.Init</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.plugin']" name="managedName">Huawei.Hms.Aaid.Plugin</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.task']" name="managedName">Huawei.Hms.Aaid.Task</attr>
    <attr path="/api/package[@name='com.huawei.hms.aaid.utils']" name="managedName">Huawei.Hms.Aaid.Utils</attr>
    <attr path="/api/package[@name='com.huawei.hms.opendevice']" name="managedName">Huawei.Hms.OpenDevice</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.entity.opendevice']" name="managedName">Huawei.Hms.Support.Api.Entity.OpenDevice</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.opendevice']" name="managedName">Huawei.Hms.Support.Api.OpenDevice</attr>
    <!--HmsNetworkCommon-->
    <attr path="/api/package[@name='com.huawei.hms.framework.common']/class[@name='IoUtils']/method[@name='closeSecure' and count(parameter)=1 and parameter[1][@type='java.io.OutputStream']]" name="managedName">CloseOutputStreamSecure</attr>
    <attr path="/api/package[@name='com.huawei.hms.framework.common']/class[@name='IoUtils']/method[@name='closeSecure' and count(parameter)=1 and parameter[1][@type='java.io.InputStream']]" name="managedName">CloseInputStreamSecure</attr>
    <attr path="/api/package[@name='com.huawei.hms.framework.common']" name="managedName">Huawei.Hms.Framework.Common</attr>
    <attr path="/api/package[@name='com.huawei.hms.framework.common.hianalytics']" name="managedName">Huawei.Hms.Framework.Common.HiAnalytics</attr>
    <add-node path="/api/package[@name='com.huawei.hms.framework.common']/class[@name='RunnableScheduledFutureEnhance']">
        <method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
            <parameter name="context" type="java.lang.Object" />
        </method>
    </add-node>
    <!--HmsSecurityBase-->
    <attr path="/api/package[@name='com.huawei.secure.android.common.util']/class[@name='IOUtil']/method[@name='closeSecure' and count(parameter)=1 and parameter[1][@type='java.io.OutputStream']]" name="managedName">CloseOutputStreamSecure</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.util']/class[@name='IOUtil']/method[@name='closeSecure' and count(parameter)=1 and parameter[1][@type='java.io.InputStream']]" name="managedName">CloseInputStreamSecure</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common']" name="managedName">Huawei.Secure.Android.Common</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.anonymization']" name="managedName">Huawei.Secure.Android.Common.Anonymization</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.base']" name="managedName">Huawei.Secure.Android.Common.Base</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.exception']" name="managedName">Huawei.Secure.Android.Common.Exception</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.sign']" name="managedName">Huawei.Secure.Android.Common.Sign</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.util']" name="managedName">Huawei.Secure.Android.Common.Util</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.webview']" name="managedName">Huawei.Secure.Android.Common.Webview</attr>
    <attr path="/api/package[@name='com.huawei.secure.android.common.xml']" name="managedName">Huawei.Secure.Android.Common.Xml</attr>
    <!--agconnnect-->
    <attr path="/api/package[@name='com.huawei.agconnect.core']/class[@name='Service']" name="managedName">AgconnectService</attr>
    <attr path="/api/package[@name='com.huawei.agconnect']" name="managedName">Huawei.Agconnect</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.annotation']" name="managedName">Huawei.Agconnect.Annotation</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.config']" name="managedName">Huawei.Agconnect.Config</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.core']" name="managedName">Huawei.Agconnect.Core</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.core.provider']" name="managedName">Huawei.Agconnect.Core.Provider</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.core.service']" name="managedName">Huawei.Agconnect.Core.Service</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.core.service.auth']" name="managedName">Huawei.Agconnect.Core.Service.Auth</attr>
    <attr path="/api/package[@name='com.huawei.agconnect.exception']" name="managedName">Huawei.Agconnect.Exception</attr>
    <!--push-->
    <attr path="/api/package[@name='com.huawei.hms.push.task']/class[@name='IntentCallable']/method[@name='call']" name="managedReturn">Java.Lang.Object</attr>
    <attr path="/api/package[@name='com.huawei.hms.push']" name="managedName">Huawei.Hms.Push</attr>
    <attr path="/api/package[@name='com.huawei.hms.push.constant']" name="managedName">Huawei.Hms.Push.Constant</attr>
    <attr path="/api/package[@name='com.huawei.hms.push.task']" name="managedName">Huawei.Hms.Push.Task</attr>
    <attr path="/api/package[@name='com.huawei.hms.push.ups']" name="managedName">Huawei.Hms.Push.Ups</attr>
    <attr path="/api/package[@name='com.huawei.hms.push.ups.entity']" name="managedName">Huawei.Hms.Push.Ups.Entity</attr>
    <attr path="/api/package[@name='com.huawei.hms.push.utils']" name="managedName">Huawei.Hms.Push.Utils</attr>
    <attr path="/api/package[@name='com.huawei.hms.push.utils.ha']" name="managedName">Huawei.Hms.Push.Utils.HA</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.entity.push']" name="managedName">Huawei.Hms.Support.Api.Entity.Push</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push']" name="managedName">Huawei.Hms.Support.Api.Push</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.base']" name="managedName">Huawei.Hms.Support.Api.Push.Base</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.base']" name="managedName">Huawei.Hms.Support.Api.Push.Base</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.pushselfshow']" name="managedName">Huawei.Hms.Support.Api.Push.PushSelfShow</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.pushselfshow.click']" name="managedName">Huawei.Hms.Support.Api.Push.PushSelfShow.Click</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.pushselfshow.entity']" name="managedName">Huawei.Hms.Support.Api.Push.PushSelfShow.Entity</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.pushselfshow.prepare']" name="managedName">Huawei.Hms.Support.Api.Push.PushSelfShow.Prepare</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.pushselfshow.utils']" name="managedName">Huawei.Hms.Support.Api.Push.PushSelfShow.Utils</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.service']" name="managedName">Huawei.Hms.Support.Api.Push.Service</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.utils']" name="managedName">Huawei.Hms.Support.Api.Push.Utils</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.utils.common']" name="managedName">Huawei.Hms.Support.Api.Push.Utils.Common</attr>
    <attr path="/api/package[@name='com.huawei.hms.support.api.push.utils.common.base']" name="managedName">Huawei.Hms.Support.Api.Push.Utils.Common.Base</attr>
    <!--=======华为End========-->
    <!--=======小米===========-->
    <remove-node path="/api/package[@name='com.xiaomi.mipush.sdk']/class[@name='PushMessageHandler']/method[@name='b' and count(parameter)=0]"/>
    <add-node path="/api/package[@name='com.xiaomi.mipush.sdk']/class[@name='PushMessageHandler']">
        <method  name="b" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" jni-signature="()Z" jni-return="Z" bridge="false" synthetic="false" visibility="protected">
        </method>
    </add-node>
    <remove-node path="/api/package[@name='com.xiaomi.mipush.sdk']/class[@name='PushMessageHandler']/method[@name='a' and count(parameter)=0]"/>
    <add-node path="/api/package[@name='com.xiaomi.mipush.sdk']/class[@name='PushMessageHandler']">
        <method  name="a" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" jni-signature="()Z" jni-return="Z" bridge="false" synthetic="false" visibility="protected">
        </method>
    </add-node>
    <remove-node path="/api/package[@name='com.xiaomi.push.service']/class[@name='XMPushService']/method[@name='a' and count(parameter)=1 and parameter[1][@type='int']]"/>
    <!--=======小米End========-->
    <!--=======魅族=========-->
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='ActVideoSetting']" name="managedName">MeizuActVideoSetting</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='AdvanceSetting']" name="managedName">MeizuAdvanceSetting</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='AdvanceSettingEx']" name="managedName">MeizuAdvanceSettingEx</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='NotifyType']" name="managedName">MeizuNotifyType</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='NotificationStyle']" name="managedName">MeizuNotificationStyle</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='AdvertisementOption']" name="managedName">MeizuAdvertisementOption</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='AppIconSetting']" name="managedName">MeizuAppIconSetting</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='BrightRemindSetting']" name="managedName">MeizuBrightRemindSetting</attr>
    <attr path="/api/package[@name='com.meizu.cloud.pushsdk.notification.model']/class[@name='TimeDisplaySetting']" name="managedName">MeizuTimeDisplaySetting</attr>
    <!--=======魅族End=========-->
    <!--========极光=========-->
    <!--<attr path="/api/package[@name='cn.jpush.android.data']" name="managedname">cn.jpush.android.jdata</attr>-->
    <!--======极光End========-->
</metadata>
ZigbeeApp/Shared/Common/SendDataToServer.cs
@@ -599,5 +599,80 @@
        }
        #endregion
        /// <summary>
        /// 极光推送消息
        /// </summary>
        [System.Serializable]
        public class JPushMessageInfo
        {
            /// <summary>
            /// 住宅ID
            /// </summary>
            public string HomeId;
            /// <summary>
            /// 推送标题
            /// </summary>
            public string Title;
            /// <summary>
            /// 推送内容
            /// </summary>
            public string Content;
            /// <summary>
            /// 推送附加数据
            /// </summary>
            public string Extras;
            /// <summary>
            /// 信息类型
            /// </summary>
            public string messageType = "";
            /// <summary>
            /// 扩展数据内容
            /// </summary>
            public string expantContent = "";
            /// <summary>
            /// spk标志,值为door.gate时表示自研
            /// </summary>
            public string spk = "";
            /// <summary>
            /// sip账号
            /// </summary>
            public string sipAccount;
        }
        /// <summary>
        /// 极光推送消息
        /// </summary>
        [System.Serializable]
        public class JPushExpandData
        {
            /// <summary>
            /// 附加内容
            /// </summary>
            public string expandData;
        }
        /// <summary>
        /// 极光推送消息
        /// </summary>
        [System.Serializable]
        public class ExpandData
        {
            /// <summary>
            /// 住宅ID
            /// </summary>
            public string homeId;
            /// <summary>
            /// 附加内容
            /// </summary>
            public string expantContent;
            /// <summary>
            ///  信息类型
            /// </summary>
            public string messageType;
        }
    }
}
ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll
old mode 100755 new mode 100644 Binary files differ
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
@@ -1,8 +1,6 @@
using Shared.Common;
using System;
using System.Collections.Generic;
using System.Text;
using Shared.IOS.HDLFVSDK;
namespace Shared.Phone.UserCenter
{
    /// <summary>
@@ -116,6 +114,13 @@
            Shared.IOS.HDLFVSDK.Video.Logout();
            //重新登录全视通
            Shared.IOS.HDLFVSDK.Video.Init("", residenceId);
#endif
#if Android
            string userName = residenceId;
            string uuid = "0E6AD0F4-FC17-45B4-AB63-08DAD3B09516";
            string code = "T0061";
            string httpServer = "120.25.212.198";
            Com.Evoyohome.Sphonelibs.Global.Global.Login(Application.Activity, userName, uuid, code, httpServer, null);
#endif
@@ -306,6 +311,13 @@
                                Shared.IOS.HDLFVSDK.Video.Init("", listHouse[0].Id);
#endif
#if Android
                                string userName = listHouse[0].Id;
                                string uuid = "0E6AD0F4-FC17-45B4-AB63-08DAD3B09516";
                                string code = "T0061";
                                string httpServer = "120.25.212.198";
                                Com.Evoyohome.Sphonelibs.Global.Global.Login(Application.Activity, userName, uuid, code, httpServer, null);
#endif
                            }
                        }
                        else {
@@ -315,6 +327,13 @@
                            Shared.IOS.HDLFVSDK.Video.Init("", Config.Instance.HomeId);
#endif
#if Android
                            string userName = Config.Instance.HomeId;
                            string uuid = "0E6AD0F4-FC17-45B4-AB63-08DAD3B09516";
                            string code = "T0061";
                            string httpServer = "120.25.212.198";
                            Com.Evoyohome.Sphonelibs.Global.Global.Login(Application.Activity, userName, uuid, code, httpServer, null);
#endif
                        }
                        Config.Instance.Save();
                    }
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
@@ -4,7 +4,6 @@
using Shared.Common.ResponseEntity;
using System.Collections.Generic;
using System.Text;
using Shared.IOS.HDLFVSDK;
namespace Shared.Phone.UserCenter
{
    /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs
@@ -335,10 +335,11 @@
                    }
                    //打开人脸管理页面
#if iOS
                    Shared.IOS.HDLFVSDK.Video.ShowFaceManagement();
#endif
#if Android
                    Com.Evoyohome.Sphonelibs.Global.Global.OpenFaceManageActivity(Application.Activity);
#endif
                };
            }
@@ -452,6 +453,10 @@
#if iOS
                Shared.IOS.HDLFVSDK.Video.ShowDeviceList();
#endif
#if Android
                Com.Evoyohome.Sphonelibs.Global.Global.OpenIntercomActivity(Application.Activity);
#endif
            };
            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
ZigbeeApp/Shared/Phone/VideoPhone/ESVideo.cs
old mode 100755 new mode 100644
@@ -17,15 +17,7 @@
        public static void ShowESVideoMonitor(ESVideoInfo mESVideoInfo)
        {
#if Android
            Android.Content.Intent intent = new Android.Content.Intent(Application.Activity, typeof(GateWay.Droid.VideoActivity));
            intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);//室外机的名称,例,室外机
            intent.PutExtra("ESRoomID", mESVideoInfo.ESRoomID);//当前用户的房间 ID
            intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID);//室外机UUID,例:JJY000007FSEYX
            intent.PutExtra("IsCollect", mESVideoInfo.IsCollect);//是否收藏
            intent.PutExtra("RoomName", mESVideoInfo.RoomName);//房间命名,例 8栋1单元0801
            intent.AddFlags(Android.Content.ActivityFlags.NewTask);
            intent.PutExtra("Type", 0);//类型,0 监控,1反呼
            Application.Activity.StartActivity(intent);
            //
#endif
        }
@@ -36,14 +28,7 @@
        public static void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo)
        {
#if Android
            Android.Content.Intent intent = new Android.Content.Intent(Application.Activity, typeof(GateWay.Droid.VideoActivity));
            intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);//室外机的名称,例,室外机
            intent.PutExtra("ESRoomID", mESVideoInfo.ESRoomID);//当前用户的房间 ID
            intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID);//室外机UUID,例:JJY000007FSEYX
            intent.PutExtra("IsCollect", mESVideoInfo.IsCollect);//是否收藏
            intent.PutExtra("RoomName", mESVideoInfo.RoomName);//房间命名,例 8栋1单元0801
            intent.PutExtra("Type", 1);//类型,0 监控,1反呼
            Application.Activity.StartActivity(intent);
            //
#endif
        }
    }