iOS-傳感器及使用

下面是去apple官網找的iphone6包含的傳感器:算法


iPhone6的感應器.png

一、傳感器的類型

iPhone內置的傳感器有
運動傳感器\加速度傳感器\加速計(Motion/Accelerometer Sensor)
環境光傳感器(Ambient Light Sensor)
距離傳感器(Proximity Sensor)
磁力計傳感器(Magnetometer Sensor)
內部溫度傳感器(Internal Temperature Sensor)
溼度傳感器(Moisture Sensor)
陀螺儀(Gyroscope)
指紋識別傳感器 (Touch ID)app

二、環境光傳感器(Ambient Light Sensor)

是iPhone和Mac設備中最爲古老的傳感器成員
它可以讓你在使用 Mac、iPhone、iPad時,眼睛更爲溫馨
從一個明亮的室外走入相對黑暗的室內後,iOS設備會自動調低亮度,讓屏幕顯得再也不那麼光亮刺眼
當你使用iPhone拍照時,閃光燈會在必定條件下自動開啓
幾乎全部的Mac 都帶有背光鍵盤,當週圍光線弱到必定條件時,會自動開啓鍵盤背光框架

三、距離傳感器(Proximity Sensor)

用於檢測是否有其餘物體靠近設備屏幕
當你打電話或接電話時將電話屏幕貼近耳邊,iPhone會自動關閉屏幕 ,好處是
節省電量
防止耳朵或面部不當心觸摸屏幕而引起一些不想要的意外操做
題外話:利用距離傳感器,能找出不少電視劇的穿幫鏡頭dom

四、磁力計傳感器(Magnetometer Sensor)

能夠感應地球磁場, 得到方向信息, 使位置服務數據更精準
能夠用於電子羅盤和導航應用
iPad的Smart Cover盒蓋睡眠操做就是基於磁力計傳感器iphone

五、內部溫度傳感器(Internal Temperature Sensor)

從 iPad一代開始,iOS設備都加入了一個內部溫度傳感器,用於檢測內部組件溫度,當溫度超過系統設定的閾值時,會出現如下提示測試

六、溼度傳感器(Moisture Sensor)

溼度傳感器跟其餘基於微電子的傳感器不一樣,是一個簡單的物理傳感器atom

簡單來講,溼度傳感器就是一張遇水變紅的試紙線程

Apple的維修人員就是經過檢測試紙是否變紅,來判斷設備是否進水
(設備進水不在保修範圍以內)3d

七、陀螺儀(Gyroscope)

陀螺儀是隨着iPhone4的上市首次出如今iOS設備上的傳感器
陀螺儀的原理是檢測設備在X、Y、Z軸上所旋轉的角速度blog

陀螺儀在賽車類遊戲中有重大做用:
模擬汽車駕駛時方向盤旋轉的動做
使得這類遊戲的操控體驗更爲真實

八、加速計傳感器(Motion/Accelerometer Sensor)

最先出如今iOS設備上的傳感器之一
加速計用於檢測設備在X、Y、Z軸上的加速度 (哪一個方向有力的做用)

加速計能夠用於檢測設備的搖晃,經典應用場景:搖一搖、計步器

總結:


755161-20151001011039027-1674981830.png

距離傳感器的使用


proximity.png

加速計的使用

這要用到iOS的一個核心運動框架CoreMotion.framework

  • 1.使用iOS給咱們提供的CoreMotion.framework框架,主要是爲了訪問加速度計陀螺儀相關的數據
  • 2.它不只僅提供給你得到實時的加速度值和旋轉速度值,更重要的是,蘋果在其中集成了不少算法,能夠直接給你輸出把重力加速度份量剝離的加速度,省去你的高通濾波操做,以及提供給你一個專門的設備的三維位置信息。

CoreMotion的使用

CoreMotion主要負責下面三種數據:

  • 1.加速度值CMAccelerometerData
  • 2.陀螺儀值CMGyroData
  • 3.設備motion值CMDeviceMotion (實際上,這個設備motion值就是經過加速度和旋轉速度進行變換算出來的)
CMDeviceMotion屬性介紹
  • 1、attitude:通俗來說,就是告訴你手機在當前空間的位置和姿式。
  • 2、gravity:重力信息,其本質是重力加速度矢量在當前設備的參考座標系中的表達。
  • 3、userAcceleration:加速速信息。
  • 4、rotationRate:計時的旋轉速率,是陀螺儀的輸出。
CoreMotion中有兩種獲取數據的方式:
  • 一、Push
    方式:提供一個線程管理器NSOperationQueue和一個回調Block,CoreMotion自動在每個採樣數據到來的時候回調這個Block,進行處理。在這種狀況下,Block中的操做會在你本身的主線程內執行。
  • 二、Pull
    方式:你必須主動去向CMMotionManager要數據,這個數據就是最近一次的採數據。你不去要,CMMotionManager就不會給你。
push方式獲取加速計數據

Push.png
push方式獲取陀螺儀數據

gyro-Push.png
push方式獲取計步器數據

下面是iOS7的用法


cmStepCounter.png

iOS8以後取代CMStepCounter的是 CMPedometer,代碼以下
首先聲明一個屬性
@property (nonatomic, strong) CMPedometer *pedometer;
接下來就能夠初始化,經過下面的代碼就能夠了,注意紅框框選住的是獲取某一段時間所走步數的代碼



文/SuperMan_Wang(簡書做者) 原文連接:http://www.jianshu.com/p/300f6f516e0f 著做權歸做者全部,轉載請聯繫做者得到受權,並標註「簡書做者」。
相關文章
相關標籤/搜索