今天项目要求区分pad和phone,网上查找资料,方法总结了一下,等实际pad拿到后在详细测试。
1.根据屏幕物理尺寸。
网上找到的计算方法如下:
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
double diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2.0) + Math.pow(dm.heightPixels, 2.0));
double screenSize = diagonalPixels / (160 * dm.density);
我在NOTE2上测试,计算结果为4.589,和实际差异较大。
直接先算长宽值,再计算屏幕尺寸,计算方法如下:
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
double xSize = dm.widthPixels / dm.xdpi;
double ySize = dm.heightPixels / dm.ydpi;
double screenSize = Math.sqrt(Math.pow(xSize, 2.0) + Math.pow(ySize, 2.0));
结果和实际比较接近。
2.根据UA。获取UA方法如下:
WebView webview;
webview = new WebView(activity);
webview.layout(0, 0, 0, 0);
WebSettings settings = webview.getSettings();
String ua = settings.getUserAgentString();
ua中包含有mobile的为phone,无则为pad
3.根据TelephonyManager中的phone type值
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int type = telephony.getPhoneType();
boolean isTablet = false;
if (type == TelephonyManager.PHONE_TYPE_NONE) {
isTablet = true;
}
4.获取手机型号,服务器端根据型号判断后处理
android.os.Build.MODEL