手机上的传感器

手机上的环境传感器,一般包括气压传感器、温度传感器、湿度传感器、光传感器、声音传感器和距离传感器等。气压传感器能通过气压测量,判断手机当前位置的海拔高度,能提高GPS定位的精度,在三星Galaxy Nexus上有配备;温度传感器一方面用来测量气温,判断当前环境是否舒适,一方面也能监测手机内部温度是否异常;而比较普遍的是光传感器和距离传感器,对智能手机来说几乎是标配,并且一般设计位于手机正面上方听筒附近位置。

一.距离传感器

Proximity API

Proximity API是W3C规范中关于距离传感器的一个独立API,为web开发者提供设备与物体之间的距离信息。
该API中定义了两个设备事件deviceproximityuserproximity,前者提供设备与物体之间的距离信息,后者判断是否感应到有物体接近。

//查看浏览器是否支持
if ('ondeviceproximity' in window) {
    // 支持返回距离信息,deviceproximity事件提供三个属性:value,min和max
    window.addEventListener('deviceproximity', function(event) {
    proximityValue.innerHTML = event.value;//value代表设备与设备前物体的距离
    proximityMax.innerHTML = event.max;     //min和max代表传感器能检测的距离范围,单位是厘米。
    proximityMin.innerHTML = event.min;
}
 
if ('onuserproximity' in window) {
    // 支持返回是否有物体靠近,
    //userproximity事件有一个属性:near。它探测的范围也是deviceproximity的检测距离范围。
    window.addEventListener('userproximity', function(event) {
        inProximity.innerHTML = event.near; //near是一个布尔值,代表是否有设备前方是否有物体靠近,默认是false
    });
}

二.环境光传感器

Ambient Light API
mbient Light API,W3C规范中关于环境光传感器的一个独立API,为web开发者提供设备感应到的环境光强度的数值。该API最初提供了2个事件监听设备的环境光状况:devicelight和lightlevel。
  • devicelight:返回环境光强度的数值,使用勒克斯(lux)照度单位
  • lightlevel:描述当前环境光的强度等级————暗淡、正常和明亮。在最新的W3C规范中,已经移除了lightlevel事件,事实上,我们完全可以通过devicelight自己来定义光的强度等级。
if ('ondevicelight' in window) {// 浏览器支持检测
    //devicelight事件只有一个value属性,随着测试设备不同可能有不同的返回数值,范围从0到无穷大
    window.addEventListener('devicelight', function(event) {
    // 获取光强度数值
        lightValue.innerHTML = Math.round(event.value);
    });
}

例如:根据数值变换网页主题

if (event.value < 50) {
    document.body.className = 'dark-theme';
} else if (event.value < 10000) {
    document.body.className = 'classic-theme';
} else {
    document.body.className = 'light-theme';
}

三.陀螺仪(重力传感器)

deviceorientation API
window.addEventListener("deviceorientation", function(event) {//提供设备的物理方向信息,表示为一系列本地坐标系的旋角。
  // 处理event.alpha、event.beta及event.gamma
}, true);

window.addEventListener("devicemotion", function(event) {   //加速度信息
  // 处理event.acceleration、event.accelerationIncludingGravity、
  // event.rotationRate和event.interval
}, true);

四.手机震动

if (vibrateSupport) { //兼容不同的浏览器  
    navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate;  
    //在需要的地方 调用navigator.vibrate(3000), 就可以实现手机震动的了(该处震动三秒),同时期支持数组 如 navigator.vibrate.([300,200,300,200,300]),300是表示震动的毫秒数,200表示两次震动的时间间隔。
}  

五.温度传感器

devicetemperature API (单位℃)

六.压力传感器

devicepressure API (单位kP)

七.湿度

devicehumidity (单位%)

兼容性

image
image

posted @ 2017-11-13 15:22  孔目湖眺望者  阅读(642)  评论(0)    收藏  举报