void Start()
    {
        if (m_insetsListenerInstalled)
        {
            return;
        }

        using (var version = new AndroidJavaClass("android.os.Build$VERSION"))
        {
            // Supported on Android 9 Pie (API 28) and later
            if (version.GetStatic <int>("SDK_INT") >= 28)
            {
                // Install the listener
                using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
                {
                    using (var activity = unityPlayer.GetStatic <AndroidJavaObject>("currentActivity"))
                    {
                        using (var window = activity.Call <AndroidJavaObject>("getWindow"))
                        {
                            using (var decorView = window.Call <AndroidJavaObject>("getDecorView"))
                            {
                                var windowInsetsListener = new WindowInsetsListener();
                                windowInsetsListener.InitInsets(decorView);
                                decorView.Call("setOnApplyWindowInsetsListener", windowInsetsListener);
                                m_insetsListenerInstalled = true;
                            }
                        }
                    }
                }
            }
        }
    }
            public GlobalLayoutProvider(Activity activity, GlobalLayoutListener globalListener, WindowInsetsListener insetsListener) : base(activity)
            {
                _activity       = activity;
                _globalListener = globalListener;
                _insetsListener = insetsListener;

                ContentView = new LinearLayout(_activity.BaseContext)
                {
                    LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent)
                };
                Width  = 0;                // this make sure we don't block touch events
                Height = ViewGroup.LayoutParams.MatchParent;
                SetBackgroundDrawable(new ColorDrawable(Color.Transparent));
            }