在没有出现android电视之前,如果要区分平板和手机有很多种方法:
方法1:看是否有通话功能
1 public boolean isTabletDevice() {
2 TelephonyManager telephony = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
3 int type = telephony.getPhoneType();
4 if (type == TelephonyManager.PHONE_TYPE_NONE) {
5 Log.i("is Tablet!");
6 } else {
7 Log.i("is phone!");
8 }
9 return false;
10 }
方法2:通过判断屏幕尺寸,此方法中认为尺寸大于6寸的都是平板(不太靠谱,总有一天会有大于6寸的手机的出现)
1 /**
2 * 检测是平板(电视)还是手机
3 * @return
4 */
5 private boolean isPad() {
6
7 DisplayMetrics dm = new DisplayMetrics();
8 getWindowManager().getDefaultDisplay().getMetrics(dm);
9 int width=dm.widthPixels;
10 int height=dm.heightPixels;
11 int dens=dm.densityDpi;
12 double wi=(double)width/(double)dens;
13 double hi=(double)height/(double)dens;
14 double x = Math.pow(wi,2);
15 double y = Math.pow(hi,2);
16 CommonUtils.LogWuwei(tag, "width is "+wi+" height is "+hi);
17 double screenInches = Math.sqrt(x+y);
18
19 CommonUtils.LogWuwei(tag, "screenInches is "+screenInches);
20
21 // MsgUtils.SendSingleMsg(splash.handlerTools,"screenInches is "+screenInches , HandlerUtils.SHOW_NORMAL_TOAST);
22
23 // 大于6尺寸则为Pad
24 if (screenInches >= 6.0) {
25 return true;
26 }
27
28 return false;
29 }
30
31
现在的平板手机的出现,更是让方法2不再使用。
回到问题的本质,为什么要区分平板和手机?
区分的目的是为了区分针对不同的设备带来最佳的用户体验,那么对于大于6寸的android设备将其处理为平板是无可厚非的。
