加速计(重力感应功能)的使用
一、概述
加速计是用来检测手机受到加速度的大小和方向的,而手机静止的时候只受到重力加速度,所以很多人把加速计功能有叫做重力感应功能。加速计的强项在于测量设备的重力方向。
iPhone提供了内置的加速计,也叫方向感应器,是通过感知特定方向的惯力总量,测量出加速度和重力的,是 iOS很重要的特色功能之一。感应器通过跟踪设备在其X、Y、Z轴上的重力加速度的方向,检测到设备当前的方向比如是平放着还是测立着,平放时正面向上还是向下,手持时home键所处的四个方向等;也可以通过侦测加速度来移 动屏幕上的对象;也可以通过加速计侦测晃动事件。接下里就详细介绍一下对应的类UIAccelerometer。
二、UIAccelerometer类
1、获取UIAccelerometer的实例,并进行相应的设置
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIAccelerometer *acceler = [UIAccelerometer sharedAccelerometer];
[acceler setUpdateInterval:0.1]; // 设置感应器更新数据的时间间隔
[acceler setDelegate:self]; // 设置代理
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
}
注:在应用加速计的视图消失时,应该 停止感应器数据的更新,这样感应器的硬件也会关闭,从而也能 起到节约电池的作用。
2、实现代理方法,获取数据
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
NSLog(@“%f,%f,%f”,[acceleration x], [acceleration y], [acceleration z]);
}
注:通过改变手机的手持方式或摇动手机,观察控制台的输出变化。
3、侦测晃动事件
用加速计侦测晃动事件,需要在收到重力加速计的数据后做一些复杂的数学运算才能很好的实现,但是, UIResponder给我们提供了这些工作,我们只需使用下面的接口:
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
// 晃动开始触发的方法
}
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent*)event
{
// 晃动结束时调用
}
-(void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent*)event
{
// 晃动中断时调用
}
// 由于窗口对象的第一响应者会收到所有的运动事件,为了确保应用当前视图控制器类为第一响应者,做如下两 个操作
-(BOOL)canBecomeFirstResponder
{
return YES;
}
-(void)viewWillAppear:(BOOL)animated
{
CMMotionManager;
[super viewWillAppear:animated];
UIAceelerometer *acceler = [UIAccelerometer sharedAccelerometer];
[acceler setUpdateInterval:0.1];
[acceler setDelegate:self];
[self.view becomeFirstResponder]; // 窗口对象作为第一响应者响应运动事件
}
加速计(重力感应功能)的使用相关推荐
- 重力感应游戏可行性办法研究_完结
重力感应游戏可行性办法研究 一.手机中的重力感应组件 很多人都知道手机有重力感应这个功能,但是重力感应具体是什么,却并不是很了解.重力感应组件不是摄像头,人们知道有多少万像素,不是触摸屏,人们了解是电 ...
- Unity3D 游戏引擎之平面小球重力感应详解【转】
http://blog.csdn.net/xys289187120/article/details/6969333 手机重力感应应该对大多数开发者并不陌生,在新一代智能手机Android ...
- Windows Phone 7(accelerometer)重力感应编程
使用重力感应器accelerometer,需要引用类库Microsoft.Devices.Sensors ,所以需要在WMAppManifest.xml 加上 <Capability Name ...
- android重力传感器横竖反,Android重力感应实现方式
在Android应用程序的开发中,占据主要地位的当属游戏的开发.我们在这篇文章中将会针对在游戏中需要用到的重力感应功能,来为大家详细分析Android重力感应的实现方法,以帮助大家解决相关问题. An ...
- Android开发之--(WIFI,蓝牙,电池,背光,SD卡,摄像头,按键,MIC,重力感应等)功能的简单使用
1.WIFI(打开,关闭,使能,扫描等) 2.蓝牙(打开关闭) 3.电池(获取电池的各种参数和状态信息) 4.背光(背光调节) 5.U盘/SDcard(判断是否插入,读取等) 6.屏幕校准(准确的说是 ...
- Flutter开发 - 重力感应和陀螺仪相关功能的开发
最近有一个重力感应的功能,需求是图片根据屏幕倾斜的方向向对应方向移动,大家应该都见过这个功能吧. 所以这个就需要重力感应或者陀螺仪的功能来判断倾斜的方向,轴距的变化.原生里面已经很成熟了,但是在flu ...
- iOS - 加速计(重力感应)
先上效果图 小球根据重力感应 然后降落 并且有弹起效果 一.原理 重力感应的三维空间 xyz的坐标系如图 (注意:和frame的坐标的y不同) x 向左: 负数 向右:正数 y 向上: 正数 向下:负 ...
- 重力感应机制和手机的屏幕绘画
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 利用手机的重力感应机制和手机的屏幕绘画功能,实现一款躲避休闲游戏. 实现平台,工具: 采用java ADT工具,jav ...
- android小游戏模版—重力感应
好久没更新博客了,今天来谈谈android小游戏---重力感应,一般在游戏里运用的比較多,比方这类游戏有:神庙逃亡.极品飞车,平衡球.三围重力迷宫,重力赛车等. 首先什么是重力感应.重力感应是指如今手 ...
- html5 360全景 陀螺仪,HTML网页设置(开启重力感应/陀螺仪)
相比较"HTML网页设置",显然"开启重力感应"更有吸引力和侧重点. 这部分在基础的学习中没什么好说的,只有一个开启重力感应可以说. 窗口大小,是针对于输出Fl ...
最新文章
- 自动化运维工具Saltstack(一)
- AlphaCode到底强在哪儿?清华博士后十分钟视频详细解析
- springboot的redis工具类编写(采用RedisTemplate)(简单的取值,取多个值)。
- 2018第一季度全球畅销手机排行出炉,苹果刷榜,小米三星各一款
- asp.net环境下的静态类以及静态变量
- 下拉列表与多选框以及GridView中的多选框的问题
- J2EE第五课Servlet随课笔记
- 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
- This subject is anonymous - it does not have any identifying principals and authorization operations
- 【C语言重点难点精讲】C语言指针
- 将不确定变为确定~真的是SqlDataReader引起的超时?
- Asp调用函数是否会影响性能?
- matlab向量相减代码,matlab转c++代码实现(主要包含C++ std::vector,std::pair学习,包含数组与常数相乘,数组相加减,将数组拉成一维向量等内容)...
- 如何使用PDF编辑器裁剪PDF页面
- 28335之GPIO输入
- 如何解决电脑横屏问题
- shiro原理及其运行流程介绍
- webpack 图片压缩
- 安装chrome第三方插件教程:(超详细)
- iVMS-4200 Vs区别_古典占星学和现代占星学的区别