转:http://www.cnblogs.com/dongwenbo/p/4301530.html
传感器
什么是传感器
传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上
传感器的作用
传感器的作用用于感应\检测设备周边的信息
不同类型的传感器, 检测的信息也不一样
iPhone中的下面现象都是由传感器完成的
在地图应用中, 能判断出手机头面向的方向
一关灯, iPhone会自动降低亮度让屏幕显得不是那么刺眼
打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏, 达到省电的目的
... ...
传感器的类型
iPhone5中内置的传感器有
- 运动传感器\加速度传感器\加速计(Motion/Accelerometer Sensor)
- 环境光传感器(Ambient Light Sensor)
- 距离传感器(Proximity Sensor)
- 磁力计传感器(Magnetometer Sensor)
- 内部温度传感器(Internal Temperature Sensor)
- 湿度传感器(Moisture Sensor)
- 陀螺仪(Gyroscope)
- ... ...
环境光传感器(Ambient Light Sensor)
是iOS、Mac设备中最为古老的传感器成员
它能够让你在使用 Mac、iPhone、iPad时,眼睛更为舒适
从一个明亮的室外走入相对黑暗的室内后,iOS设备会自动调低亮度,让屏幕显得不再那么光亮刺眼
当你使用iPhone拍照时,闪光灯会在一定条件下自动开启
几乎所有的Mac 都带有背光键盘,当周围光线弱到一定条件时,会自动开启键盘背光
距离传感器(Proximity Sensor)
用于检测是否有其他物体靠近设备屏幕
当你打电话或接电话时将电话屏幕贴近耳边,iPhone会自动关闭屏幕 ,好处是
节省电量
防止耳朵或面部不小心触摸屏幕而引发一些不想要的意外操作
题外话:利用距离传感器,能找出很多电视剧的穿帮镜头
磁力计传感器(Magnetometer Sensor)
- 可以感应地球磁场, 获得方向信息, 使位置服务数据更精准
- 可以用于电子罗盘和导航应用
- iPad的Smart Cover盒盖睡眠操作就是基于磁力计传感器
内部温度传感器(Internal Temperature Sensor)
从 iPad一代开始,iOS设备都加入了一个内部温度传感器,用于检测内部组件温度,当温度超过系统设定的阈值时,会出现以下提示
内部温度传感器,对于提升iOS设备自身安全性与稳定性有很大的帮助
湿度传感器(Moisture Sensor)
湿度传感器跟其他基于微电子的传感器不同,是一个简单的物理传感器
简单来说,湿度传感器就是一张遇水变红的试纸
Apple的维修人员就是通过检测试纸是否变红,来判断设备是否进水
(设备进水不在保修范围之内)
陀螺仪(Gyroscope)
- 陀螺仪是随着iPhone4的上市首次出现在iOS设备上的传感器
- 陀螺仪可以用于检测设备的持握方式
- 陀螺仪的原理是检测设备在X、Y、Z轴上所旋转的角速度
陀螺仪在赛车类游戏中有重大作用:
模拟汽车驾驶时方向盘旋转的动作
使得这类游戏的操控体验更为真实
运动传感器\加速度传感器\加速计(Motion/Accelerometer Sensor)
最早出现在iOS设备上的传感器之一
加速计用于检测设备在X、Y、Z轴上的加速度 (哪个方向有力的作用)
加速计可以用于检测设备的摇晃,经典应用场景
- 摇一摇
- 计步器
传感器总结
传感器类型 | 作用 |
环境光传感器 | 感应周边环境光线的强弱(自动调节屏幕亮度) |
距离传感器 | 感应是否有其他物体靠近设备屏幕(打电话自动锁屏) |
磁力计传感器 | 感应周边的磁场(合盖锁屏) |
内部温度传感器 | 感应设备内部的温度(提醒用户降温,防止损伤设备) |
湿度传感器 | 感应设备是否进水(方便维修人员) |
陀螺仪 | 感应设备的持握方式(赛车类游戏) |
加速计 | 感应设备的运动(摇一摇、计步器) |
距离传感器的使用
1 // 开启距离感应功能
2 [UIDevice currentDevice].proximityMonitoringEnabled = YES;
3 // 监听距离感应的通知
4 [[NSNotificationCenter defaultCenter] addObserver:self
5 selector:@selector(proximityChange:)
6 name:UIDeviceProximityStateDidChangeNotification
7 object:nil];
8
9 - (void)proximityChange:(NSNotificationCenter *)notification {
10 if ([UIDevice currentDevice].proximityState == YES) {
11 NSLog(@"某个物体靠近了设备屏幕"); // 屏幕会自动锁住
12 } else {
13 NSLog(@"某个物体远离了设备屏幕"); // 屏幕会自动解锁
14 }
15 }