zoukankan      html  css  js  c++  java
  • 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,这里最好搜一下你原来的名字,进行更改。我遇到的编译不过都是这里的路径还保留着原来的名字,未作更改。
  • 相关阅读:
    团队冲刺第四天
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
    典型用户及用户场景描述
    《构建之法》阅读笔记01
    第九周学习进度条
    第八周学习进度条
    软件工程概论课堂作业3
    课堂练习-找水王续
  • 原文地址:https://www.cnblogs.com/allanliu/p/4210310.html
Copyright © 2011-2022 走看看