在没有出现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设备将其处理为平板是无可厚非的。