手机传感器检测
在手机上打开这一页,把手机放平看气泡是不是停在中间,转一转看陀螺仪有没有数值,最后点几下震动确认马达还在。
授权与状态
iOS 13 之后需要在用户点击里申请「运动与方向访问」,Android 一般不需要。如果这台设备没有传感器(大多数电脑都是),页面等一秒半收不到事件就会提示。
水平仪
读不到重力,可能是设备在自由落体,或者根本没有加速度计。
气泡在圆圈中间表示放平。这个水平仪没有做温漂补偿,用来判断「大概平了」够用,不能当精密测量工具。
加速度计
手机平放屏幕朝上时,Z 轴应该接近 +9.8。翻转成屏幕朝下会变成 −9.8。把手机竖起来,重力会转移到 Y 轴;横过来则转移到 X 轴。这个规律可以用来确认三个轴有没有接错。
当前读数不含重力,静止时应该接近 0;如果这里一直是 0,说明设备没有提供这组数据。
陀螺仪
静止放在桌上时三个值都应该接近 0。拿着手机慢慢转,会有几十度每秒的读数;快速甩动能到几百度。数值不归零说明这台设备的陀螺仪有零偏,很多低端机型都有,系统通常会自己补偿。
方向与指南针
这次读到的是相对方向,起点由浏览器决定,不能当指南针用。iOS 需要在授权时允许「运动与方向访问」,Android 上则依赖设备是否提供地磁传感器。
屏幕方向角是 0°,当前方向为 竖屏(正常持握)。如果打开「旋转锁定」,这里的角度不会变,但加速度计仍然会跟着手机转。
震动马达
这个浏览器不支持网页震动。iOS 的 Safari 完全不支持,Android 上需要 Chrome 系浏览器。
短震 100 ms:最短的一次震动,用来确认马达还活着。
长震 600 ms:持续震动,能听出马达有没有异响或卡顿。
双短震:两下短震,检查节奏能不能分辨。
三连震:三下连续的短震,间隔很短,能试出马达的启停速度。
SOS 节奏:经典求救信号节奏,长短组合最考验马达的响应。
这些数字分别是什么
加速度计算的是「力」,不是「位置」。手机静止在桌上时,重力仍然作用在它身上,所以读数不是 0 而是约 9.8 m/s²;当你把手机往上甩,传感器会先感到一个向上的加速度,读数超过 1 g,松手后的自由落体阶段则接近 0。这个「静止不为零」是第一眼最容易误解的地方,也是水平仪能工作的原因:重力方向固定,手机一倾斜,重力在三个轴上的投影就变了。
陀螺仪测的是角速度,单位度每秒,不是角度。想得到角度必须对时间积分,而积分会把每一次微小误差累积起来,几分钟就能漂出去几十度。所以页面只显示瞬时角速度:静止时应该接近 0,转动时才有数值。真正的姿态融合要靠加速度计和陀螺仪一起做,那是系统层面的算法,网页拿不到中间结果。
指南针的干扰比想象中大得多。地磁场的强度只有几十微特斯拉,一块小磁铁就能让它偏出十几度;手机壳上的磁吸、旁边的音箱、金属桌面、无线充电底座都是常见干扰源。系统一般会要求画「8」字来重新校准,本质是让设备在多个方向上采样,把硬磁和软磁偏差估出来。页面显示的是浏览器给出的方位角,没有做任何补偿。
震动用的是 navigator.vibrate,它只有「震多久、停多久」,没有强度参数。所以你能测出马达会不会响、节奏能不能分辨,但测不出力度的线性。iOS 的 Safari 完全不支持这个接口,Android 上也需要 Chrome 系浏览器;桌面浏览器即使有这个方法也不会真的震。
想测屏幕本身有没有坏点、色彩是不是断层,用屏幕测试;想测触摸有没有死区、多点触控能不能识别,用触控测试;想在电脑上测输入设备,可以看键盘按键测试。
常见问题
电脑上打开什么都没有,是坏了吗?
不是。台式机和大多数笔记本没有加速度计和陀螺仪,浏览器也就不会派发运动和方向事件。这个页面是给手机和平板用的,在电脑上只能确认页面能打开、按钮能点。想在电脑上验证,只能外接带传感器的开发板。
iPhone 上点了没反应,怎么授权?
iOS 13 之后,Safari 要求网页在用户操作里显式申请「运动与方向访问」权限。点页面上的授权按钮,在弹出的系统对话框里选允许。如果之前选过不允许,需要去「设置 → Safari → 运动与方向访问」里改回来,再刷新页面。
静止放在桌上,加速度为什么不是 0?
因为读的是「含重力」的加速度。手机静止时重力仍然作用在传感器上,大小约 9.8 m/s²,所以合加速度是 1 g 而不是 0。这也是水平仪能工作的原理:重力方向固定,手机一倾斜,重力在三个轴上的分量就变了。
指南针读数一直在跳,准吗?
地磁传感器很容易被干扰。手机壳里的磁铁、旁边的音箱、金属桌面、甚至无线充电器都会让读数偏十几度;靠近强磁场时还会出现大幅跳动。校准方法是拿着手机在空中画几个 8 字,让系统重新学习当地磁场。真要定向,用地图软件里那个带罗盘的视角更可靠。
陀螺仪显示的是角度吗?
不是,是角速度,单位度每秒。角度要靠对角速度做时间积分才能得到,而积分会累积误差,几分钟就能漂出去几十度。所以页面只显示瞬时角速度:静止时接近 0,转动时才有数值,这才是陀螺仪的真实输出。
震动按钮没反应?
网页震动依赖 navigator.vibrate,目前只有 Android 上的 Chrome 系浏览器支持,iOS 的 Safari 完全不支持。另外部分浏览器要求页面已经有过用户交互,直接点按钮通常就满足条件。插着充电线时某些机型也会禁用震动。
屏幕方向一直显示竖屏,转手机也不变?
先确认系统的「旋转锁定」没有打开。其次,部分浏览器在页面没有铺满屏幕时不会上报方向变化。屏幕方向角描述的是浏览器视口的方向,不是手机硬件的姿态——如果页面被锁定成竖屏,这里就不会变,但加速度计仍然会跟着手机转。