什么是傳感器
傳感器是一種感應(yīng)\檢測(cè)裝置, 目前已經(jīng)廣泛應(yīng)用于智能手機(jī)上
傳感器的作用
用于感應(yīng)\檢測(cè)設(shè)備周邊的信息
不同類型的傳感器, 檢測(cè)的信息也不一樣
iPhone中的下面現(xiàn)象都是由傳感器完成的
在地圖應(yīng)用中, 能判斷出手機(jī)頭面向的方向
一關(guān)燈, iPhone會(huì)自動(dòng)降低亮度讓屏幕顯得不是那么刺眼
打電話時(shí), 人臉貼近iPhone屏幕時(shí), 屏幕會(huì)自動(dòng)鎖屏, 達(dá)到省電的目的
傳感器的類型
- iPhone內(nèi)置的傳感器有:
運(yùn)動(dòng)傳感器\加速度傳感器\加速計(jì)(Motion/Accelerometer Sensor)
環(huán)境光傳感器(Ambient Light Sensor)
距離傳感器(Proximity Sensor)
磁力計(jì)傳感器(Magnetometer Sensor)
內(nèi)部溫度傳感器(Internal Temperature Sensor)
濕度傳感器(Moisture Sensor)
陀螺儀(Gyroscope)
... ...
環(huán)境光傳感器(Ambient Light Sensor)
是iOS、Mac設(shè)備中最為古老的傳感器成員
它能夠讓你在使用 Mac、iPhone、iPad時(shí),眼睛更為舒適
從一個(gè)明亮的室外走入相對(duì)黑暗的室內(nèi)后,iOS設(shè)備會(huì)自動(dòng)調(diào)低亮度,讓屏幕顯得不再那么光亮刺眼當(dāng)你使用iPhone拍照時(shí),閃光燈會(huì)在一定條件下自動(dòng)開(kāi)啟
幾乎所有的Mac 都帶有背光鍵盤(pán),當(dāng)周圍光線弱到一定條件時(shí),會(huì)自動(dòng)開(kāi)啟鍵盤(pán)背光
距離傳感器(Proximity Sensor)
- 用于檢測(cè)是否有其他物體靠近設(shè)備屏幕
當(dāng)你打電話或接電話時(shí)將電話屏幕貼近耳邊,iPhone會(huì)自動(dòng)關(guān)閉屏幕 ,好處是 - 節(jié)省電量
- 防止耳朵或面部不小心觸摸屏幕而引發(fā)一些不想要的意外操作
題外話:利用距離傳感器,能找出很多電視劇的穿幫鏡頭
磁力計(jì)傳感器(Magnetometer Sensor)
可以感應(yīng)地球磁場(chǎng), 獲得方向信息, 使位置服務(wù)數(shù)據(jù)更精準(zhǔn)
可以用于電子羅盤(pán)和導(dǎo)航應(yīng)用
iPad的Smart Cover盒蓋睡眠操作就是基于磁力計(jì)傳感器
內(nèi)部溫度傳感器(Internal Temperature Sensor)
從iPad一代開(kāi)始,iOS設(shè)備都加入了一個(gè)內(nèi)部溫度傳感器,用于檢測(cè)內(nèi)部組件溫度,當(dāng)溫度超過(guò)系統(tǒng)設(shè)定的閾值時(shí),會(huì)出現(xiàn)以下提示
內(nèi)部溫度傳感器,對(duì)于提升iOS設(shè)備自身安全性與穩(wěn)定性有很大的幫助
濕度傳感器(Moisture Sensor)
濕度傳感器跟其他基于微電子的傳感器不同,是一個(gè)簡(jiǎn)單的物理傳感器
簡(jiǎn)單來(lái)說(shuō),濕度傳感器就是一張遇水變紅的試紙
Apple的維修人員就是通過(guò)檢測(cè)試紙是否變紅,來(lái)判斷設(shè)備是否進(jìn)水
(設(shè)備進(jìn)水不在保修范圍之內(nèi))
陀螺儀(Gyroscope)
陀螺儀是隨著iPhone4的上市首次出現(xiàn)在iOS設(shè)備上的傳感器
陀螺儀可以用于檢測(cè)設(shè)備的持握方式
陀螺儀的原理是檢測(cè)設(shè)備在X、Y、Z軸上所旋轉(zhuǎn)的角速度

陀螺儀在賽車類游戲中有重大作用:
模擬汽車駕駛時(shí)方向盤(pán)旋轉(zhuǎn)的動(dòng)作
使得這類游戲的操控體驗(yàn)更為真實(shí)
運(yùn)動(dòng)傳感器\加速度傳感器\加速計(jì)(Motion/Accelerometer Sensor)
最早出現(xiàn)在iOS設(shè)備上的傳感器之一
加速計(jì)用于檢測(cè)設(shè)備在X、Y、Z軸上的加速度 (哪個(gè)方向有力的作用)
加速計(jì)可以用于檢測(cè)設(shè)備的搖晃,經(jīng)典應(yīng)用場(chǎng)景
搖一搖
計(jì)步器
距離傳感器的使用的
//1.開(kāi)啟距離傳感器
UIDevice.current.isProximityMonitoringEnabled = true
//2.田間通知監(jiān)聽(tīng)變化
NotificationCenter.default.addObserver(forName: UIDevice.proximityStateDidChangeNotification, object: nil, queue: OperationQueue.main)
{ (notice) in
if UIDevice.current.proximityState
{
print("有物體靠近")
}else
{
print("有物體離開(kāi)")
}
}
陀螺儀
//判斷陀螺儀是否可用
if !manager.isGyroAvailable
{
return
}
// 2.設(shè)置采樣間隔
manager.gyroUpdateInterval = 1
//3. 開(kāi)始采樣
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
}
//設(shè)置采樣間隔
manager.accelerometerUpdateInterval = 0.5
//開(kāi)始采樣
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. 獲取磁力計(jì)傳感器的值
// 1.判斷磁力計(jì)是否可用
if !manager.isMagnetometerAvailable
{
return
}
//2.設(shè)置采樣間隔
manager.deviceMotionUpdateInterval = 2
//3. 開(kāi)始采樣
manager.startMagnetometerUpdates(to: OperationQueue.main)
{ (data, error) in
if error != nil
{
return
}
let field = data?.magneticField
print(field?.x,field?.y, field?.z)
}
}