什么是传感器
传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上
传感器的作用
用于感应\检测设备周边的信息
不同类型的传感器, 检测的信息也不一样
iPhone中的下面现象都是由传感器完成的
在地图应用中, 能判断出手机头面向的方向
一关灯, iPhone会自动降低亮度让屏幕显得不是那么刺眼
打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏, 达到省电的目的
传感器的类型
- iPhone内置的传感器有:
运动传感器\加速度传感器\加速计(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轴上所旋转的角速度
iphoneXYZ轴
陀螺仪在赛车类游戏中有重大作用:
模拟汽车驾驶时方向盘旋转的动作
使得这类游戏的操控体验更为真实
运动传感器\加速度传感器\加速计(Motion/Accelerometer Sensor)
最早出现在iOS设备上的传感器之一
加速计用于检测设备在X、Y、Z轴上的加速度 (哪个方向有力的作用)
加速计可以用于检测设备的摇晃,经典应用场景
摇一摇
计步器
距离传感器的使用的
//1.开启距离传感器
UIDevice.current.isProximityMonitoringEnabled = true
//2.田间通知监听变化
NotificationCenter.default.addObserver(forName: UIDevice.proximityStateDidChangeNotification, object: nil, queue: OperationQueue.main)
{ (notice) in
if UIDevice.current.proximityState
{
print("有物体靠近")
}else
{
print("有物体离开")
}
}
陀螺仪
//判断陀螺仪是否可用
if !manager.isGyroAvailable
{
return
}
// 2.设置采样间隔
manager.gyroUpdateInterval = 1
//3. 开始采样
manager.startGyroUpdates(to: OperationQueue.main)
{ (gyroData, error) in
if error != nil
{
return
}
let rate = gyroData?.rotationRate
print(rate?.x, rate?.y, rate?.z)
}
加速器
//加速器
func accelerometor()
{
//判断家加速器是否可用
if !manager.isAccelerometerAvailable
{
return
}
//设置采样间隔
manager.accelerometerUpdateInterval = 0.5
//开始采样
manager.startAccelerometerUpdates(to: OperationQueue.main)
{ (accelerometer, error) in
if error != nil
{
return
}
let acceleration = accelerometer?.acceleration
print(acceleration?.x, acceleration?.y, acceleration?.z)
}
}
磁力器
func cili()
{
//1. 获取磁力计传感器的值
// 1.判断磁力计是否可用
if !manager.isMagnetometerAvailable
{
return
}
//2.设置采样间隔
manager.deviceMotionUpdateInterval = 2
//3. 开始采样
manager.startMagnetometerUpdates(to: OperationQueue.main)
{ (data, error) in
if error != nil
{
return
}
let field = data?.magneticField
print(field?.x,field?.y, field?.z)
}
}
网友评论