1. 前言

如果你百度一下,如何判断当前设备是手机还是平板,搜索到的结果一般都是下面这个。

/** * 是否是平板 * * @param context 上下文 * @return 是平板则返回true,反之返回false */public static boolean isPad(Context context) {         return (context.getResources().getConfiguration().screenLayout        & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;}

在大多数情况下,这个方法是有用的。但是经过一段时间的使用,我发现这个方法是会出现误判的。例如:在华为平板上,可以通过调整系统设置中“字体和显示大小”,放大界面,这个时候这个方法的获取结果就是 false,将平板误识别为手机。

所以,想要有效地判断当前设备是手机还是平板,还得另找其他方法。

2. 解决方案

因为我们是可以获取到当前设备屏幕的宽度和长度(单位是像素),那么我们可以通过勾股定理,计算出设备的对角线长度,即屏幕大小(单位是英寸)。而目前市面上,最小的平板是7.0英寸,那么只要判断是屏幕大小大于等于7.0英寸的设备就是平板了,具体代码如下:

/** * 是否是平板 * * @param context 上下文 * @return 是平板则返回true,反之返回false */public static boolean isPad(Context context) {         WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);    Display display = wm.getDefaultDisplay();    DisplayMetrics dm = new DisplayMetrics();    display.getMetrics(dm);    double x = Math.pow(dm.widthPixels / dm.xdpi, 2);    double y = Math.pow(dm.heightPixels / dm.ydpi, 2);    double screenInches = Math.sqrt(x + y); // 屏幕尺寸    return screenInches >= 7.0;}

如果想进一步交流和学习的同学,可以加一下QQ群哦!

Android开发者群号:371529514

更多相关文章

  1. Python获取android设备cpu和内存占用情况
  2. Android - 获取设备信息的工具类( DeviceUtil)
  3. Android studio 学习1:实现点击事件的4种方法
  4. 解决方法:android 6.0(api 23) SDK,不再提供org.apache.http.*(只
  5. Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操
  6. 【Android笔记】Activity涉及界面全屏的方法
  7. Android Studio查看源码时出现Sources for ‘Android API 30 Pla
  8. Android 蓝牙设备的查找与连接
  9. Android中Canvas绘图方法的实现

随机推荐

  1. Java如何操作Android的adb shell
  2. 修改Android项目中build.gradle默认模板
  3. Android(安卓)读取文件内容实现方法总结
  4. Android(安卓)请求Root权限代码
  5. Android 如何应用ttf图标字体库
  6. 关于 surfaceview 背景覆盖的问题
  7. parseSdkContent failedCould not initia
  8. [Android Training视频系列] 8.2 Managin
  9. ubuntu系统中搭建Android应用层、framewo
  10. android 群发会话中获取联系人列表