發布日期:2022-10-09 點擊率:104
加速度傳感器 ios:iOS加速度傳感器(accelerometer) | 菜鳥教程 第1張" title="加速度傳感器 ios:iOS加速度傳感器(accelerometer) | 菜鳥教程 第1張-傳感器知識網"/>
IOS加速度傳感器(accelerometer)
簡介
加速度傳感器是根據x、y和z三個方向來檢測在設備位置的改變。
通過加速度傳感器可以知道當前設備相對于地面的位置。
以下實例代碼需要在真實設備上運行,在模擬器上是無法工作的。
實例步驟
1、創建一個簡單的視圖應用程序
2、在ViewController.xib中添加三個標簽,并創建一個ibOutlets分別為:xlable、ylabel和zlabel
3、如下所示,更新ViewController.h
#import
IOS加速度傳感器(accelerometer) 簡介
加速度傳感器是根據x、y和z三個方向來檢測在設備位置的改變。
通過加速度傳感器可以知道當前設備相對于地面的位置。
以下實例代碼需要在真實設備上運行,在模擬器上是無法工作的。
例步驟
1、創建一個簡單的視圖應用程序
2、在ViewController.xib中添加三個標簽,并創建一個ibOutlets分別為:xlable、ylabel和zlabel
3、如下所示,更新ViewController.h
#import
4、如下所示,更新ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[UIAccelerometer sharedAccelerometer]setDelegate:self];
//Do any additional setup after loading the view,typically from a nib
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:
(UIAcceleration *)acceleration{
[xlabel setText:[NSString stringWithFormat:@"%f",acceleration.x]];
[ylabel setText:[NSString stringWithFormat:@"%f",acceleration.y]];
[zlabel setText:[NSString stringWithFormat:@"%f",acceleration.z]];
}
@end
輸出
當我們在iPhone設備中運行該應用程序,得到的輸出結果如下所示。
iOS加速度傳感器
加速度傳感器是根據x,y和z三個方向來檢測設備位置的變化
iOS設備正面朝上放置,加速度傳感器的默認原點為手機的物理重心位置,y軸朝手機頂部,x朝右,z朝屏幕正上方(正方向)
import CoreMotion
初始化UIAccelerometer單例
3.設置UIAccelerometer的accelerometerUpdateInterval屬性,就是檢查設備更新的時間間隔
如果你設備保持靜止然后豎直放置的話,加速度的值就是(0,-1,0),將其平放在桌面上就會是(0,0,-1)
前言:之前參加了一個比賽,里面主要涉及到VR圖片拍攝和圖片3D呈現,本次主要說說圖片拍攝中使用到的陀螺儀和加速度計。
1、什么是CoreMotion
CoreMotion是一個專門處理Motion的框架,其中包含了兩個部分加速度計和陀螺儀,在iOS4之前加速度計是由UIAccelerometer類來負責采集數據,現在一般都是用CoreMotion來處理加速度過程,不過由于UIAccelerometer比較簡單,同樣有人在使用。加速計由三個坐標軸決定,用戶最常見的操作設備的動作移動,晃動手機(搖一搖),傾斜手機都可以被設備檢測到,加速計可以檢測到線性的變化,陀螺儀可以更好的檢測到偏轉的動作,可以根據用戶的動作做出相應的動作,iOS模擬器無法模擬以上動作,真機調試需要開發者賬號。
2、CoreMotion作用
CoreMotion主要負責三種數據:加速度值,陀螺儀值,設備motion值。實際上,這個設備motion值就是通過加速度和旋轉速度進行 fusing變換算出來的,基本原理后面會介紹。CoreMotion在系統中以單獨的后臺線程的方式去獲得原始數據,并同時執行一些motion算法來提取更多的信息,然后呈獻給應用層做進一步處理。CoreMotion框架包含有一個專門的Manager類,CMMotionManager,然后由這個manager去管理三種和運動相關的數據封裝類,而 且,這些類都是CMLogItem類的子類,所以相關的motion數據都可以和發生的時間信息一起保存到對應文件中,有了時間戳,兩個相鄰數據之間的實 際更新時間就很容易得到了。這個東西是非常有用的,比如有些時候,你得到的是50Hz的采樣數據,但希望知道的是每一秒加速度的平均值。
3、CoreMotion數據獲取
CoreMotion中獲取數據主要是兩種方式:
一種是Push,就是你提供一個線程管理器NSOperationQueue,再提供一個Block,這樣,CoreMotion自動在每一個采樣數據到來的時候回調這個Block,進行處理。在這中情況下,block中的操作會在你自己的主線程內執行。
一種是 Pull,在這個方式里,你必須主動去像CMMotionManager要數據,這個數據就是最近一次的采樣數據。你不去要,CMMotionManager就不會給你。當然,在這種情況下,CoreMotion所有的操作都在自己的后臺線程中進行,不會有任何干擾你當前線程的行為。
4、加速計
Pull獲取方式
Push獲取方式
5、陀螺儀
Pull獲取方式
Push獲取方式
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原