正文
Android APP判断设备是否为平板的三种方法:
- 通过屏幕尺寸判断。一般来说,平板电脑的屏幕尺寸比手机大很多,可以根据屏幕的长宽比和尺寸等信息来区分设备类型。
- 通过屏幕像素密度判断。一般来说,平板电脑的屏幕像素密度比手机低,可以通过像素密度来判断设备类型。
- 通过设备参数判断。可以通过读取设备硬件参数来区分设备类型,例如可以根据设备内存、CPU性能等参数来判断是否为平板电脑。
注:需要注意的是,这三种方法都有一定的局限性,不能百分之百地准确判断设备类型。
我们吸收参考网上的多种平板判断方案,同时也使用一些大厂 APP 对设备的判断进行交叉验证。
话不多说,直接上开源地址:https://github.com/gallonyin/PhoneOrTablet
为了方便大家快速验证,直接使用我们编译好的 APP: 下载地址
APP截图:
小米手机
蓝叠5(中国)
自制redroid
结论: 在蓝叠5和自制redroid上我们使用各大APP可以被验证为平板设备。
核心检查类:
package org.yameida.phoneortablet;
import android.content.Context;
import android.content.res.Configuration;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.WindowManager;
public class CheckUtils {
private static final String TAG = "CheckUtils";
/**
* 判断是否为平板
*/
public static boolean isPad() {
boolean result = false;
String mDeviceType = SysProp.get("ro.build.characteristics", "default");
if (mDeviceType != null && mDeviceType.equalsIgnoreCase("tablet")) {
result = true;
}
Log.d(TAG, "isPad:" + result);
return result;
}
/**
* 判断是否为平板
*/
public static boolean isPad(Context context) {
boolean result = false;
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);
// 大于7尺寸则为Pad
if (screenInches >= 7.0) {
result = true;
}
Log.d(TAG, "screenInches:" + screenInches);
Log.d(TAG, "isPad:" + result);
return result;
}
/**
* 判断是否为平板
*/
public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
/**
* 判断屏幕尺寸
*/
public static double screenSize(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);
// 屏幕尺寸
return Math.sqrt(x + y);
}
}
参考文章
Android 判断是否为平板的三种方法
喜欢本文可以关注我~有问题可以留言或私信我。