iOS传感器的使用

转载自 http://bigbelldev.com/blog/2013/08/05/ios-accelerometer/

大钟威武 博客

iOS涉及到的传感器

不用查资料,用过iPhone的同学都知道。iphone中有加速度传感器,可以感知手机在哪个方向上有加速度,比如屏幕的翻转、飞行控制游戏等都是利用这个特征做的;有指南针(貌似叫陀螺仪?),可以知道你的方向;还有定位装置,可以知道你现在的位置在哪里。

加速度传感器相关功能是由CoreMotion提供;指南针、定位信息相关功能由CoreLocation提供。

CoreMotion

在CoreMotion.framework中,有下面这些类:

1
2
3
4
5
6
7
CMAccelerometerData
CMAttitude
CMDeviceMotion
CMGyroData
CMLogItem
CMMagnetometerData
CMMotionManager

每个是做什么的,可以在官方文档中阅读,就不在这翻译了。其中实现对设备加速度的识别,主要是使用CMMotionManager。

CMMotionManager

如何使用CMMotionManager?

Step1:产生一个CMMotionManager的实例mManager。

Step2:实例使用方法isAccelerometerAvailable判断加速度传感器是否可用。

Step3:如果可用,则通过方法setAccelerometerUpdateInterval设定采样频率。

Step4:最后使用startAccelerometerUpdatesToQueue:withHandler开始采样及对采样进行处理。

示例代码

我在下面的代码中,实现了一个小球在一个框中运动,运动的轨迹是根据手机的倾斜角度计算,运动的方向同倾斜的角度一致,并且倾斜角度越大运动速度越快。 代码下载 在代码的实现过程中,对view的层次有了更深的体会。此外,在给label供数的时候,发现刚好使用代理的方式,算是也对代理做了联系。

编码过程中遇到七七八八问题的记录

Code Sign error:

着手时,借鉴了这个代码,在编译时遇到了这个问题:

Code Sign error: The identity ‘iPhone Developer: Haomian Wang (33P29785DD)‘ doesn‘t match any valid certificate/private key pair in the default keychain

原因:

CodeSigning签署的不是你的provisioning,没法在真机上使用。

解决办法:

在TARGETS中的Build Settings里,找Code Signing Identity,里面把不是自己的developer改成自己的provisioning。

注:

借鉴的这份代码是使用acceleroImeter:didAccelerate方法来处理扑捉到的加速度信息,但这个方法已经在iOS5废弃了,现在都使用CoreMotion框架来实现。

未添加CoreMotion.framework

编译自己代码时,首先出现了如下错误:

原因:

原因是代码中使用了CoreMotion,但工程中没有添加CoreMotion.framework。这很常见:在使用CoreLocation等framework时,也要想着在工程中添加framework。

解决办法: 在下图处添加CoreMotion.framework

给工程改名字导致编译不过

这是个题外话,当时想给工程改个名字,结果改了之后,编译不过。 原因:

原因都是名字、路径更改导致的找不到文件。

解决办法:

改名字注意三点:

  1. 修改了Project的名字后,Xcode会提示你一些其他地方也需要修改,你就按着提示修改;
  2. 也修改本地文件夹的名字后,注意xcode工程中的文件列表文件名是否会变为红色,如果是红色,需要你再想办法重新加一下路径;
  3. 工程中的BuildSettings,这里最好搜一下你原来的名字,进行更改。我遇到的编译不过都是这里的路径还保留着原来的名字,未作更改。
时间: 2024-08-25 00:13:05

iOS传感器的使用的相关文章

iOS 传感器学习

传感器总结 传感器类型 作用 环境光传感器 感应周边环境光线的强弱(自动调节屏幕亮度) 距离传感器 感应是否有其他物体靠近设备屏幕(打电话自动锁屏) 磁力计传感器 感应周边的磁场(合盖锁屏) 内部温度传感器 感应设备内部的温度(提醒用户降温,防止损伤设备) 湿度传感器 感应设备是否进水(方便维修人员) 陀螺仪 感应设备的持握方式(赛车类游戏) 加速计 感应设备的运动(摇一摇.计步器) // 开启距离感应功能 2 [UIDevice currentDevice].proximityMonitori

【IOS】IOS开发问题解决方法索引(二)

IOS开发问题解决方法索引(二) 1       不使用ARC编译,-fno-objc-arc ios5 选择了ARC但是不使用ARC编译,-fno-objc-arc http://leobluewing.iteye.com/blog/1384797 http://blog.cnrainbird.com/index.php/2012/03/13/object-c_kai_fa_zhong_hun_he_shi_yong_huo_bu_shi_yong_arc/ 2       SIGABRT错误

iOS百思不得姐、ARKit、旋转动画、立体相册源码等

iOS精选源码 自定义视图弹出实现方案 仿写百思不得姐 ARKit,距离感应,AR尺子 iOS传感器集锦 AR太阳系,动画与光线处理,ARKit iOS启动页广告JYJAdViewController ThemeManager 是一个轻量级的主题管理库,使用简单方便无耦合 旋转跑马屏风动画Donut ARKit,AR尺子 3D立体可旋转相册 -- 原创应用:大杨子相册 iOS优质博客 iOS代码加固/混淆 众所周知的是大部分iOS代码一般不会做加密加固,因为iOS APP一般是通过AppStor

关于《Swift开发指南》背后的那些事

时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014年7月5日苹果宣布Swift语言二十天后,<Swift开发指南>第一稿交予图灵出版社2014年6月9日苹果宣布Swift语言三天后,启动<Swift开发指南>撰写2014年6月2日凌晨1点(北京时间:)在苹果开发者大会WWDC 2014上,苹果宣布了全新的iOS及OS X平台开发语言S

【挨踢人物传】关东升:成功的路上很寂寞,贵在坚持(第20期)

[编者有话]       本期的嘉宾关东升,近10年编写15本书,执着坚持,不管遇到什么挫折或者不顺利,都能够用最大的勇气,继续坚持下去.因为他知道,只有坚持下去,黎明前的曙光才会属于他  -- [本期人物档案] 个人信息: 51CTO账号:tony_guan 姓名:关东升 性别:男 所在地:北京 教育信息:清华大学 职业信息: 从业时间:18年 行业:移动互联网.教育公司:智捷教育 职位:技术总监.技术公文 关注技术:iOS.Cocos2d-x.Android.WindowPhone.用户体验

【读书笔记】iOS-加速计与陀螺仪

一,数据的"滤波" 直接从加速度计获得的原始数据,往往不能直接使用,而是需要去除一些干扰数据,这个过程称为"滤波"."滤波"一词来源于无线电技术中对无线电信号的处理过程.事实上从数学角度而言它们是一样的,它们都是某种采样信号,这个"滤波"的过程很复杂,要通过傅里叶变换实现"滤波". 二,陀螺仪 加速度计只能测量设备上的线性加速度,设备的倾斜,偏转,旋转加速度计无法测量到,这需要使用陀螺仪,陀螺仪又叫角速度传

【读书笔记】iOS-使用蓝牙

蓝牙是由Sony Ericsso公司研发出来的,它是一种无线通讯协议,主要用于短程和低耗电设备,其有效通讯范围约30ft,传输速度为1MB/s.与Wifi设计初衷不同,蓝牙适用于无线的外围设备,进行小量传输,例如,麦克风,手机,键盘等. 在蓝牙4.0之后将通信模式分为高速和低速类型.高速类型是传统蓝牙,在iOS中高速蓝牙通信开发可以通过Game Kit实现.低速类型称为低功耗蓝牙(Bluetooth Low Energy,BLE),可以连接一些量测型传感器,例如,心率监视器,血压计和温度计等,开

【读书笔记】iOS-微定位技术

在大型商场,医院或是大楼里,你是否曾经有过找不到想去的地方的经历呢?这种情况下采用传统的定位方法就有些力不从心了.首先这些地方不能采用GPS定们,而Wifi和蜂窝式移动电话基站定位误差比较大.这种情况下的定位就叫"微定位"技术 . 微定位技术中一个比较重要的概念-地理围栏.地理围栏是LBS的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界.当手机 进入,离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告.有了地理围栏技术,位置社交网站主可以帮助用户进入某一地区时自

iOS CoreMotion框架(传感器)

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向. 2.运动类型软件-让我们知道我们跑步多少公里. 3.社交软件中的摇一摇功能. 4.游戏中扮演角色类中根据设备的晃动等进行操作. 等等..而且还有很多应用正在层出不穷的展现再我们面前. 其实,他们多半是使用了iOS中的一个框架-核心运动框架-CoreMotion.framework CoreMotion.framework框架是做什么的 我们可以使用iOS提供给