如何区分 使用的是手机还是平板?

最近解决这个问题:如何区分 使用的是手机还是平板?
网上找到如下的解决办法:


怎样通过程序 判断 用户使用的是手机还是平板电脑?

DisplayMetrics dm;
dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
// 得到屏幕的宽
int  intScreenX = dm.widthPixels;
// 得到屏幕的高
int intScreenY = dm.heightPixels;

这个只能得到分辨率,像素的

像一些 手机 现在就有 960 *640 的了
7寸的平板 有些是 1024*600
而 后面新出来的像 HTC 的 手机,分辨率 已经上 1000 了

分辨率这条路走不通

查 系统版本 也走不通
平板有些还用的 2.3 的
三星手机的 4.0 的都马上出来了

需要的功能其实很简单,就是打开一个网页,如果是 手机,就打开 迷你的,比如 WAP
如果是 平板,估计就打开 WWW 的了


其实要的功能就纳闷简单,判断一下屏幕实际尺寸(英寸),7寸及以上(其实>6 就可以了,看个人)就认为是 平板了,就直接打开大网页了~~~

得到长宽,勾股定理 得到对角线,OK~~~


        DisplayMetrics dm;
                dm = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(dm);
                // 得到屏幕的宽(像素)
                int screenX = dm.widthPixels;
                // 得到屏幕的高(像素)
                int screenY = dm.heightPixels;
                // 每英寸的像素点
                int dpi = dm.densityDpi;
                // 得到屏幕的宽(英寸)
                float a = screenX / dpi;
                // 得到屏幕的高(英寸)
                float b = screenY / dpi;
                // 勾股定理
                double screenIn = Math.sqrt((a * a) + (b * b));

通过测量身边的几个设备得出以下参数:

华为mediapad     x=800 y=1216 dpi=213   a=3  b=5 screenIn=5.8

小米1s                  x=480  y=850   dpi=240   a=2  b=3 screenIn=3.6

小米2                    x=720  y=1280   dpi=320   a=2  b=4 screenIn=4.47

摩托罗拉MZ606  x=800 y=1232  dpi=160   a=5  b=7 screenIn=8.6


我觉得screenIn 大于等于5就是平板了 应该可以了

有机会拿三星平板测试


在前端开发中,区分平板手机通常是通过检测设备的屏幕尺寸、分辨率和用户代理(User Agent)来实现的。以下是一些常用的方法: 1. **使用CSS媒体查询**: 通过CSS媒体查询可以根据屏幕的宽度和高度来应用不同的样式,从而区分平板手机。 ```css /* 针对手机的样式 */ @media only screen and (max-width: 767px) { body { background-color: lightblue; } } /* 针对平板的样式 */ @media only screen and (min-width: 768px) and (max-width: 1024px) { body { background-color: lightgreen; } } ``` 2. **使用JavaScript检测用户代理**: 通过JavaScript可以获取用户代理字符串,并根据其中的信息来判断设备类型。 ```javascript function isTablet() { var userAgent = navigator.userAgent.toLowerCase(); var tabletDevices = ['ipad', 'nexus 7', 'nexus 10', 'sm-t', 'sm-p', 'sm-n', 'surface']; for (var i = 0; i < tabletDevices.length; i++) { if (userAgent.indexOf(tabletDevices[i]) !== -1) { return true; } } return false; } if (isTablet()) { console.log('这是一个平板设备'); } else { console.log('这是一个手机设备'); } ``` 3. **使用第三方库**: 有些第三方库如 [Mobile-Detect](https://github.com/hgoebl/mobile-detect.js) 可以简化设备检测的过程。 ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/mobile-detect/1.4.5/mobile-detect.min.js"></script> <script> var md = new MobileDetect(window.navigator.userAgent); if (md.tablet()) { console.log('这是一个平板设备'); } else if (md.phone()) { console.log('这是一个手机设备'); } else { console.log('无法检测设备类型'); } </script> ``` 通过这些方法,前端开发者可以有效地区分平板手机,并根据不同的设备类型提供优化的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值