public final classNotchScreenUtil {/*** 华为start*/

//判断是否是华为刘海屏

public static booleanhasNotchInScreenAtHuawei(Context context) {boolean ret = false;try{

ClassLoader cl=context.getClassLoader();

Class> HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");

Method get= HwNotchSizeUtil.getMethod("hasNotchInScreen");

ret=(Boolean) get.invoke(HwNotchSizeUtil);

Log.d("NotchScreenUtil", "this Huawei device has notch in screen?"+ret);

}catch(ClassNotFoundException e) {

Log.e("NotchScreenUtil", "hasNotchInScreen ClassNotFoundException", e);

}catch(NoSuchMethodException e) {

Log.e("NotchScreenUtil", "hasNotchInScreen NoSuchMethodException", e);

}catch(Exception e) {

Log.e("NotchScreenUtil", "hasNotchInScreen Exception", e);

}returnret;

}/*** 获取华为刘海的高

*@paramcontext

*@return

*/

public static intgetNotchSizeAtHuawei(Context context) {int[] ret = new int[] { 0, 0};try{

ClassLoader cl=context.getClassLoader();

Class> HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");

Method get= HwNotchSizeUtil.getMethod("getNotchSize");

ret= (int[]) get.invoke(HwNotchSizeUtil);

}catch(ClassNotFoundException e) {

Log.e("NotchScreenUtil", "getNotchSize ClassNotFoundException");

}catch(NoSuchMethodException e) {

Log.e("NotchScreenUtil", "getNotchSize NoSuchMethodException");

}catch(Exception e) {

Log.e("NotchScreenUtil", "getNotchSize Exception");

}return ret[1];

}/*** 华为end*/

/*** Oppo start*/

public static booleanhasNotchInScreenAtOppo(Context context) {boolean hasNotch = context.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");

Log.d("NotchScreenUtil", "this OPPO device has notch in screen?"+hasNotch);returnhasNotch;

}public static intgetNotchSizeAtOppo() {return 80;

}/*** Oppo end*/

/*** vivo start*/

public static final int NOTCH_IN_SCREEN_VOIO = 0x00000020;//是否有凹槽

public static final int ROUNDED_IN_SCREEN_VOIO = 0x00000008;//是否有圆角

public static booleanhasNotchInScreenAtVivo(Context context) {boolean ret = false;try{

ClassLoader cl=context.getClassLoader();

Class> FtFeature = cl.loadClass("com.util.FtFeature");

Method get= FtFeature.getMethod("isFeatureSupport", int.class);

ret=(Boolean) get.invoke(FtFeature, NOTCH_IN_SCREEN_VOIO);

Log.d("NotchScreenUtil", "this VIVO device has notch in screen?" +ret);

}catch(ClassNotFoundException e) {

Log.e("NotchScreenUtil", "hasNotchInScreen ClassNotFoundException", e);

}catch(NoSuchMethodException e) {

Log.e("NotchScreenUtil", "hasNotchInScreen NoSuchMethodException", e);

}catch(Exception e) {

Log.e("NotchScreenUtil", "hasNotchInScreen Exception", e);

}returnret;

}public static intgetNotchSizeAtVivo(Context context){return dp2px(context, 32);

}/*** vivo end*/

/*** dp转px

*@paramcontext

*@paramdpValue

*@return

*/

private static int dp2px(Context context, intdpValue) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue,context.getResources().getDisplayMetrics());

}/*** 获取手机厂商

*

*@return手机厂商*/

public final static int DEVICE_BRAND_OPPO = 0x0001;public final static int DEVICE_BRAND_HUAWEI = 0x0002;public final static int DEVICE_BRAND_VIVO = 0x0003;

@SuppressLint("DefaultLocale")public static intgetDeviceBrand() {

String brand=android.os.Build.BRAND.trim().toUpperCase();if (brand.contains("HUAWEI")) {

Log.d("device brand", "HUAWEI");returnDEVICE_BRAND_HUAWEI;

}else if (brand.contains("OPPO")) {

Log.d("device brand", "OPPO");returnDEVICE_BRAND_OPPO;

}else if (brand.contains("VIVO")) {

Log.d("device brand", "VIVO");returnDEVICE_BRAND_VIVO;

}return 0;

}

}

android 获取刘海高度,Android各厂商的刘海屏高度获取工具类相关推荐

  1. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...

  2. php对接小程序获取表单,PHP实现微信小程序用户授权的工具类

    事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档:<用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档:<用户数据解密说明文档& ...

  3. java mediatype属性_基于ServletRequest实现请求获取内容类型的媒体类型MediaType、字符集Charset的工具类ContentTypeUtil...

    一.源码说明 基于springframework的org.springframework.http.MediaType通过ServletRequest对象分别获取到媒体类型.字符集类型,具体工具类Co ...

  4. cgm 转jpg java_获取图片,音频,视频,压缩包文件类型的工具类

    1.[代码][Java]代码 /* * Copyright (C) 2013 Simple Explorer * * This program is free software; you can re ...

  5. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  6. Android开发常用工具类集合

    转载自:https://blog.csdn.net/xiaoyi_tdcq/article/details/52902844 Android开发常用工具类集合 android开发中为了避免重复造轮子, ...

  7. 分享一些收集整理的一些常用Android万能工具类

    尊重原创  https://github.com/l123456789jy/Lazy 内容包括 AnimationUtils 动画工具类 AppUtils APP相关信息工具类 AssetDataba ...

  8. android 字体像素转换工具类_Android中px与dip,sp与dip等的转换工具类

    Android中px与dip,sp与dip等的转换工具类 功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方 ...

  9. android刘海屏高度适配,Android刘海屏的适配

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

  10. android获取操作系统版本号,Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类...

    1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串号 6.获取手机中的语言列表 SystemUtil类 1. /** 2. ...

最新文章

  1. android上传图片崩溃,导致安卓手机死机的照片拍摄者表示这张照片是无意之举...
  2. 聊天机器人之需求分析和流程介绍
  3. 无盘服务器2个dhcp,无盘 dhcp 服务器配置
  4. python3 requests 动态网页post提交数据_Python爬虫三:动态网页爬虫
  5. 用dict读取和写入表格_用Python快速处理表格,让你快人一步两步三四部
  6. mysql子查询sysdate_Oracle向MySQL 迁移相关事项
  7. 前台为html后台是asp在vs2012中建立什么,Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得...
  8. 特斯拉副总裁陶琳:在中国采集的数据都将存在中国
  9. java 将 ResultSet 转化为 json格式
  10. bert性能优化之——用另一种方式整合多头注意力
  11. Local Database Overview for Windows Phone
  12. Django新手图文教程
  13. C语言编程软件的下载安装、使用和写代码
  14. GTG-Shapley: Efficient and Accurate Participant Contribution Evaluation in Federated Learning 读后总结
  15. 微信公众平台卡劵功能接入指南
  16. 教育培训机构拼团招生小程序公众号
  17. Unity Editor 编辑器扩展 九 Gizmos
  18. mybatis在配置mapper.xml时出现 tag name excepted 问题
  19. python获取手机号码归属地_基于Python的免费手机号码归属地查询
  20. matlab程序是什么格式,科学网—Matlab中的P代码文件 - 杨笔锋的博文

热门文章

  1. 病毒virus - 拓扑排序
  2. CRF as RNN
  3. cad角度命令怎么输入_新手入门,学习CAD必须掌握,教你使用标注命令,绘图效率翻一倍...
  4. python的“end=”介绍
  5. nginx 正向代理http和https
  6. CPU消耗高,tps低问题排查分析
  7. scala中case class与一般的class的区别
  8. vs2010 无法启动程序 系统找不到指定的文件
  9. MySQL——临时表
  10. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月4日)...