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,这里最好搜一下你原来的名字,进行更改。我遇到的编译不过都是这里的路径还保留着原来的名字,未作更改。
  • 相关阅读:
    第五章 Python——字符编码与文件处理
    第六章 Python——函数与面向过程编程
    第七章 Python——模块与包
    第一章 计算机硬件基础与操作系统介绍
    luogu P1706 全排列问题
    luogu 2142 高精度减法
    luogu P1601 高精度加法
    luogu P1803 线段覆盖 贪心
    luogu P1031 均分纸牌 贪心
    luogu P2678 跳石头 二分答案
  • 原文地址:https://www.cnblogs.com/allanliu/p/4210310.html
Copyright © 2011-2022 走看看