Ejemplo n.º 1
0
    //获得右侧不安全区像素大小
    public static int GetSafeInsetRightOfLandscapeLeft(int def)
    {
        AndroidJavaObject activityJO = AndroidPlatform.CurActivity;//new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        EnumSafeInsetArg  eArg       = EnumSafeInsetArg.eRight;
        int ret = def;

        if (GetSafeInsetAndroidP(activityJO, ref ret, eArg))
        {
            return(ret);
        }
        if (HasNotchScreenOPPO(activityJO))
        {
            if (GetSafeInsetOPPO(activityJO, ref ret, eArg))
            {
                return(ret);
            }
        }
        if (HasNotchScreenVIVO(activityJO))
        {
            if (GetSafeInsetVIVO(activityJO, ref ret, eArg))
            {
                return(ret);
            }
        }
        if (HasNotchScreenHuaWei(activityJO))
        {
            if (GetSafeInsetHuawei(activityJO, ref ret, eArg))
            {
                return(ret);
            }
        }
        if (HasNotchScreenXiaoMi(activityJO))
        {
            if (GetSafeInsetXiaomi(activityJO, ref ret, eArg))
            {
                return(ret);
            }
        }
        return(ret);
    }
Ejemplo n.º 2
0
 //vivo
 protected static bool GetSafeInsetVIVO(AndroidJavaObject activityJO, ref int outValue, EnumSafeInsetArg eArg)
 {
     try
     {
         bool ret = GetSafeInsetByDimen(activityJO, ref outValue);
         if (!ret)
         {
             outValue = dip2px(activityJO, 27);
         }
         //Main.errorString += string.Format("GetSafeInsetVIVO notch height={0}\n",outValue);
         return(true);
     }
     catch (System.Exception e)
     {
         //Main.errorString += string.Format("GetSafeInsetVIVO failed!! Exception={0}\n",e);
         BaseLogSystem.internal_Info("GetSafeInsetVIVO failed!!!! Exception={0}", e);
     }
     return(false);
 }
Ejemplo n.º 3
0
 //huawei获取刘海尺寸:width、height int[0]值为刘海宽度 int[1]值为刘海高度。
 protected static bool GetSafeInsetHuawei(AndroidJavaObject activityJO, ref int outValue, EnumSafeInsetArg eArg)
 {
     try
     {
         AndroidJavaClass jo   = new AndroidJavaClass("com.huawei.android.util.HwNotchSizeUtil");
         int[]            info = jo.CallStatic <int[]>("getNotchSize");
         outValue = info[1];
         //Main.errorString += string.Format("GetSafeInsetHuawei notch height={0}",outValue);
         BaseLogSystem.internal_Info("GetSafeInsetHuawei notch height={0}", outValue);
         return(true);
     }
     catch (System.Exception e)
     {
         //Main.errorString += string.Format("GetSafeInsetHuawei failed!! Exception={0}\n",e);
         BaseLogSystem.internal_Info("GetSafeInsetHuawei failed!!!! Exception={0}", e);
     }
     return(false);
 }
Ejemplo n.º 4
0
 //xiaomi
 protected static bool GetSafeInsetXiaomi(AndroidJavaObject activityJO, ref int outValue, EnumSafeInsetArg eArg)
 {
     //https://www.jianshu.com/p/7a934313637e
     try
     {
         //AndroidJavaObject resourceJO = activityJO.Call<AndroidJavaObject>("getResources");
         //int rsID = resourceJO.Call<int>("getIdentifier","notch_height", "dimen", "android");
         //if (rsID > 0)
         //{
         //    outValue = resourceJO.Call<int>("getDimensionPixelSize",rsID);
         //    //Main.errorString += string.Format("GetSafeInsetXiaomi notch height={0}\n",outValue);
         //    BaseLogSystem.internal_Info("GetSafeInsetXiaomi notch height={0}",outValue);
         //    return true;
         //}
         bool ret = GetSafeInsetByDimen(activityJO, ref outValue);
         //Main.errorString += string.Format("GetSafeInsetXiaomi notch height={0}\n",outValue);
         BaseLogSystem.internal_Info("GetSafeInsetXiaomi notch height={0}", outValue);
         return(ret);
     }
     catch (System.Exception e)
     {
         //Main.errorString += string.Format("GetSafeInsetXiaomi failed!! Exception={0}\n",e);
         BaseLogSystem.internal_Info("GetSafeInsetXiaomi failed!!!! Exception={0}", e);
     }
     return(false);
 }
Ejemplo n.º 5
0
    //android p
    protected static bool GetSafeInsetAndroidP(AndroidJavaObject activityJO, ref int outValue, EnumSafeInsetArg eArg)
    {
        try
        {
            int SDK_INT = SystemPropertiesGetInt("ro.build.version.sdk", activityJO, -1);
            if (SDK_INT >= 28)
            {
                int left = (int)Screen.safeArea.x;//对称,两边用一样的值
                BaseLogSystem.internal_Info("GetSafeInsetAndroidP Screen.safeArea.x={0}", Screen.safeArea.x);
                AndroidJavaObject windowsJO      = activityJO.Call <AndroidJavaObject>("getWindow");
                AndroidJavaObject decorViewJO    = windowsJO.Call <AndroidJavaObject>("getDecorView");
                AndroidJavaObject windowInsetsJO = decorViewJO.Call <AndroidJavaObject>("getRootWindowInsets");
                if (windowInsetsJO == null)
                {
                    BaseLogSystem.internal_Info("GetSafeInsetAndroidP false");
                    return(false);
                }
                //AndroidJavaObject displayCutout = windowInsetsJO.Call<AndroidJavaObject>("getDisplayCutout");
                //left = displayCutout.Call<int>("SafeInsetLeft");
                left = AndroidPlatform.MainActivityClass.CallStatic <int>("GetAndroidPSafeInsetTop");
                BaseLogSystem.internal_Info("GetSafeInsetAndroidP GetAndroidPSafeInsetTop()={0}", left);
                if (Screen.orientation == ScreenOrientation.LandscapeRight)
                {
                    left = AndroidPlatform.MainActivityClass.CallStatic <int>("GetAndroidPSafeInsetRight");
                    BaseLogSystem.internal_Info("GetSafeInsetAndroidP GetAndroidPSafeInsetRight()={0}", left);
                }
                else
                {
                    left = AndroidPlatform.MainActivityClass.CallStatic <int>("GetAndroidPSafeInsetLeft");
                    BaseLogSystem.internal_Info("GetSafeInsetAndroidP GetAndroidPSafeInsetLeft()={0}", left);
                }

                BaseLogSystem.internal_Info("GetSafeInsetAndroidP GetAndroidPSafeInsetLeft()={0}", left);
                outValue = left;
                return(true);
            }
        }
        catch (System.Exception e)
        {
            //Main.errorString += string.Format("GetSafeInsetAndroidP failed!! Exception={0}\n",e);
            BaseLogSystem.internal_Info("GetSafeInsetAndroidP failed!!!! Exception={0}", e);
        }
        return(false);
    }