import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Build;
import android.view.DisplayCutout;import com.dogness.platform.utils.AppUtils;import java.lang.reflect.Method;/*** Created by dcg on 2021/9/25* 检测手机是否是刘海屏*/public class NotchInScreen {/*** 是否有刘海屏** @return*/@SuppressLint("NewApi")public static boolean hasNotchInScreen(Activity activity) {// android  P 以上有标准 API 来判断是否有刘海屏if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {try {DisplayCutout displayCutout = activity.getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();if (displayCutout != null) {// 说明有刘海屏return true;}} catch (Exception e) {e.printStackTrace();return false;}} else {// 通过其他方式判断是否有刘海屏  目前官方提供有开发文档的就 小米,vivo,华为(荣耀),oppoString manufacturer = Build.MANUFACTURER;if (AppUtils.IsNullString(manufacturer)){return false;} else if (manufacturer.equalsIgnoreCase("HUAWEI")) {return hasNotchHw(activity);} else if (manufacturer.equalsIgnoreCase("xiaomi")) {return hasNotchXiaoMi(activity);} else if (manufacturer.equalsIgnoreCase("oppo")) {return hasNotchOPPO(activity);} else if (manufacturer.equalsIgnoreCase("vivo")) {return hasNotchVIVO(activity);} else {return false;}}return false;}/*** 判断vivo是否有刘海屏* https://swsdl.vivo.com.cn/appstore/developer/uploadfile/20180328/20180328152252602.pdf** @param activity* @return*/private static boolean hasNotchVIVO(Activity activity) {try {Class<?> c = Class.forName("android.util.FtFeature");Method get = c.getMethod("isFeatureSupport", int.class);return (boolean) (get.invoke(c, 0x20));} catch (Exception e) {e.printStackTrace();return false;}}/*** 判断oppo是否有刘海屏* https://open.oppomobile.com/wiki/doc#id=10159** @param activity* @return*/private static boolean hasNotchOPPO(Activity activity) {return activity.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");}/*** 判断xiaomi是否有刘海屏* https://dev.mi.com/console/doc/detail?pId=1293** @param activity* @return*/private static boolean hasNotchXiaoMi(Activity activity) {try {Class<?> c = Class.forName("android.os.SystemProperties");Method get = c.getMethod("getInt", String.class, int.class);return (int) (get.invoke(c, "ro.miui.notch", 1)) == 1;} catch (Exception e) {e.printStackTrace();return false;}}/*** 判断华为是否有刘海屏* https://devcenter-test.huawei.com/consumer/cn/devservice/doc/50114** @param activity* @return*/private static boolean hasNotchHw(Activity activity) {try {ClassLoader cl = activity.getClassLoader();Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");return (boolean) get.invoke(HwNotchSizeUtil);} catch (Exception e) {return false;}}
}

Android 判断手机是否刘海屏适配各主流手机型号相关推荐

  1. Android 判断是否是刘海屏

    刘海屏手机越来越多,App需要适配. /*** 判断是否是刘海屏* @return*/ public static boolean hasNotchScreen(Activity activity){ ...

  2. html5安卓机判断刘海屏,Android判断是否为刘海屏

    主要总结主流品牌小米.华为.oppo.vivo的刘海屏判断.在某些特殊页面需要适配刘海屏时,可以用以下方法判断. 或者判断屏幕比例是否大于2. /** * 小米刘海屏判断. */ public sta ...

  3. 笔记:android 全面屏,刘海屏适配

    现在全面屏.刘海屏.水滴屏各式各样,这样就意味着我们苦逼的程序员又多了些适配工作 不过还好,不算太麻烦 全面屏适配:在AndroidManifest 文件中添加如下代码即可 <meta-data ...

  4. Android 判断是否有刘海屏

    文档 查阅了网上很多文章几乎都是抄的下面这些文档中的内容,所以就不详细说了,大家可以直接去看就可以了. android P 在 android P 上 google 官方提供了标准的 api 来识别是 ...

  5. Android刘海屏适配全方案(华为、小米、Vivo、Oppo)

    前言 目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是还可以.但是作为移动开发者来说,这并不是一件好事,越来越多异形屏手机的出现意味着我们 ...

  6. Android刘海屏适配全方案

    目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是还可以.但是作为移动开发者来说,这并不是一件好事,越来越多异形屏手机的出现意味着我们需要投 ...

  7. Android 刘海屏适配全攻略

    这里主要是介绍一下Android P中刘海屏的适配以及Android P之前的适配.为什么要分开呢?因为Android P之前官方还没提供API来进行适配,都是由各家厂商来提供适配方案的. 2.And ...

  8. Android P 刘海屏适配全攻略,移动智能终端开发

    对于有状态栏的页面,不会受到刘海屏特性的影响,因为刘海屏包含在状态栏中了: 全屏显示的页面,系统刘海屏方案会对应用界面做下移处理,避开刘海区显示,这时会看到刘海区域变成一条黑边,完全看不到刘海了: 已 ...

  9. android小米刘海屏幕适配,Android、iPhone手机刘海屏适配判断

    一.简介 手机屏幕的正上方居中位置(下图黑色区域)会被挖掉一个孔,屏幕被挖掉的区域无法正常显示内容,这种类型的屏幕就是刘海屏,也有其他叫法:挖孔屏.凹凸屏等等 二.Android刘海屏适配判断 1.判 ...

最新文章

  1. bin文件转换成html,怎么样把BIN文件转换成ISO文件
  2. 76. Minimum Window Substring
  3. python自己重启自己程序_python 自动重启本程序
  4. 坯子库曲面推拉教程_一招曲面流动,搞定99%异形建模
  5. java 3d模型插件_3D模型整合插件 Kitbasher V1.2 支持3DS MAX 2012~2018
  6. 【搜索】P1032 字串变换
  7. 算数平均数、中位数、众数和几何平均数
  8. 电脑连上网络,浏览器上不了网?
  9. 老干妈怒了:我才是中国第一!
  10. 2020校招搜狗笔试
  11. Excel 中如何根据单元格内容删除行
  12. Android开发——Snackbar使用详解
  13. python爬虫爬取东方财富网股票走势+一些信息
  14. webpack之配置es6转换成es5
  15. js循环绑定事件问题及解决方法
  16. linux运维实习报告,it运维实习报告.docx
  17. 腾讯地图实现地图找房功能
  18. JAVA编写文件格式转换UTF-8
  19. pdf2swf在线无法展示单页PDF
  20. 嵩明:“整村授信”助力乡村振兴

热门文章

  1. Spring面试Ioc和Aop问题总结
  2. 递归分治问题之找出两个有序序列的中间值
  3. M1 Macbook Pro 16G 512G SSD 写入情况记录
  4. 我从未看过荒原写作背景_5种您从未听说过的很棒的Mozilla新技术
  5. 企业微信的外部联系人回调处理技巧
  6. php ssd性能影响,影响SSD固态硬盘性能的几个因素
  7. 【 田静语法】—简单句的核心构成
  8. 巧用api提升钣金设计装配 3 - 钣金样式和折弯规则
  9. socketio python_python3--socketIO_client 摸索怕坑指南
  10. Spring-事务管理