IOS 传感器

2020-05-27  本文已影响0人  越天高

什么是传感器

传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上

传感器的作用

用于感应\检测设备周边的信息
不同类型的传感器, 检测的信息也不一样

iPhone中的下面现象都是由传感器完成的

在地图应用中, 能判断出手机头面向的方向
一关灯, iPhone会自动降低亮度让屏幕显得不是那么刺眼
打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏, 达到省电的目的

传感器的类型

... ...

环境光传感器(Ambient Light Sensor)

距离传感器(Proximity Sensor)

磁力计传感器(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)
            
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读