当前位置:   article > 正文

js监听手机屏幕亮度、震动、方向变化_navigator.vibrate

navigator.vibrate

Vibration API

Vibration接口用于在浏览器中发出命令,使得设备振动。显然,这个API主要针对手机,适用场合是向用户发出提示或警告,游戏中尤其会大量使用。由于振动操作很耗电,在低电量时最好取消该操作。

使用下面的代码检查该接口是否可用。目前,只有Chrome和Firefox的Android平台最新版本支持它。

  1. navigator.vibrate = navigator.vibrate
  2. || navigator.webkitVibrate
  3. || navigator.mozVibrate
  4. || navigator.msVibrate;
  5. if (navigator.vibrate) {
  6. // 支持
  7. }

vibrate方法可以使得设备振动,它的参数就是振动持续的毫秒数。

navigator.vibrate(1000);

上面的代码使得设备振动1秒钟。

vibrate方法还可以接受一个数组作为参数,表示振动的模式。偶数位置的数组成员表示振动的毫秒数,奇数位置的数组成员表示等待的毫秒数。

navigator.vibrate([500, 300, 100]);

上面代码表示,设备先振动500毫秒,然后等待300毫秒,再接着振动100毫秒。

vibrate是一个非阻塞式的操作,即手机振动的同时,JavaScript代码继续向下运行。要停止振动,只有将0毫秒或者一个空数组传入vibrate方法。

  1. navigator.vibrate(0);
  2. navigator.vibrate([]);

如果要让振动一直持续,可以使用setInterval不断调用vibrate。

  1. var vibrateInterval;
  2. function startVibrate(duration) {
  3. navigator.vibrate(duration);
  4. }
  5. function stopVibrate() {
  6. if(vibrateInterval) clearInterval(vibrateInterval);
  7. navigator.vibrate(0);
  8. }
  9. function startPeristentVibrate(duration, interval) {
  10. vibrateInterval = setInterval(function() {
  11. startVibrate(duration);
  12. }, interval);
  13. }

Luminosity API

Luminosity API用于屏幕亮度调节,当移动设备的亮度传感器感知外部亮度发生显著变化时,会触发devicelight事件。目前,只有Firefox部署了这个API。

  1. window.addEventListener('devicelight', function(event) {
  2. console.log(event.value + 'lux');
  3. });

上面代码表示,devicelight事件的回调函数,接受一个事件对象作为参数。该对象的value属性就是亮度的流明值。

这个API的一种应用是,如果亮度变强,网页可以显示黑底白字,如果亮度变弱,网页可以显示白底黑字。

  1. window.addEventListener('devicelight', function(e) {
  2. var lux = e.value;
  3. if(lux < 50) {
  4. document.body.className = 'dim';
  5. }
  6. if(lux >= 50 && lux <= 1000) {
  7. document.body.className = 'normal';
  8. }
  9. if(lux > 1000) {
  10. document.body.className = 'bright';
  11. }
  12. });

CSS下一个版本的Media Query可以单独设置亮度,一旦浏览器支持,就可以用来取代Luminosity API。

  1. @media (light-level: dim) {
  2. /* 暗光环境 */
  3. }
  4. @media (light-level: normal) {
  5. /* 正常光环境 */
  6. }
  7. @media (light-level: washed) {
  8. /* 明亮环境 */
  9. }

Orientation API

Orientation API用于检测手机的摆放方向(竖放或横放)。

使用下面的代码检测浏览器是否支持该API。

  1. if (window.DeviceOrientationEvent) {
  2. // 支持
  3. } else {
  4. // 不支持
  5. }

一旦设备的方向发生变化,会触发deviceorientation事件,可以对该事件指定回调函数。

  1. window.addEventListener("deviceorientation", callback);

回调函数接受一个event对象作为参数。

  1. function callback(event){
  2. console.log(event.alpha);
  3. console.log(event.beta);
  4. console.log(event.gamma);
  5. }

上面代码中,event事件对象有alpha、beta和gamma三个属性,它们分别对应手机摆放的三维倾角变化。要理解它们,就要理解手机的方向模型。当手机水平摆放时,使用三个轴标示它的空间位置:x轴代表横轴、y轴代表竖轴、z轴代表垂直轴。event对象的三个属性就对应这三根轴的旋转角度。

  • alpha:表示围绕z轴的旋转,从0到360度。当设备水平摆放时,顶部指向地球的北极,alpha此时为0。
  • beta:表示围绕x轴的旋转,从-180度到180度。当设备水平摆放时,beta此时为0。
  • gramma:表示围绕y轴的选择,从-90到90度。当设备水平摆放时,gramma此时为0。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/97211
推荐阅读
相关标签
  

闽ICP备14008679号