Core Location支持两种方式去获取方位相关的信息:

heading:有磁力计的设备可以获得指南针方向.

course:有GPS的设备可以获取设备的行进方向和速度.

加入方向相关的事件

info.plist里加入UIRequiredDeviceCapabilities相关的键:

  • magnetometer:磁力计,获取heading信息
  • gps:获取course信息.

获取Heading相关的事件

  1. 创建CLLocationManager对象.
  2. 通过调用headingAvailable类方法来检查heading事件是否有效.
  3. 赋值给location manager的delegate.
  4. 如果你要真实的北方,开始定位服务.
  5. 调用startUpdatingHeading方法,开始heading事件的递送.
- (void)startHeadingEvents {if (!self.locManager) {CLLocationManager* theManager = [[[CLLocationManager alloc] init] autorelease];// Retain the object in a property.self.locManager = theManager;locManager.delegate = self;}// Start location services to get the true heading.locManager.distanceFilter = 1000;locManager.desiredAccuracy = kCLLocationAccuracyKilometer;[locManager startUpdatingLocation];// Start heading updates.if ([CLLocationManager headingAvailable]) {locManager.headingFilter = 5;[locManager startUpdatingHeading];}
}

你赋值给delegate的对象,一定要遵循CLLocationManagerDelegate协议.当一个新的heading事件到达时,location manager会调用locationManager:didUpdateHeading:方法去递送这个事件给app.一旦接收到一个新的事件,检查headingAccuracy属性去确保你接收的数据是有效的.如果你要用的是真实的heading,在使用它之前,同样要检查它是否包含有效的值.

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {if (newHeading.headingAccuracy < 0)return;// Use the true heading if it is valid.CLLocationDirection  theHeading = ((newHeading.trueHeading > 0) ?newHeading.trueHeading : newHeading.magneticHeading);self.currentHeading = theHeading;[self updateHeadingDisplays];
}

当用户在移动时攻取course信息

在获取当前用户定位时,就可以获取course和速度.

获取手机的指南针和行进方向相关推荐

  1. android 获取屏幕旋转方向,android获取手机屏幕尺寸和旋转方向

    布局文件main.xml: android:layout_width="fill_parent" android:layout_height="fill_parent&q ...

  2. Android获取手机方向

    如果用户开启了设置里的屏幕旋转,Android中处理横竖屏切换,通常的做法是在AndroidManifest.xml中定义android:configChanges="orientation ...

  3. Android杂谈---获取手机屏幕大小

    Android杂谈---获取手机屏幕大小 SurfaceView简单例子 玩转Android---UI篇---ZoomControls放大缩小图片 更多相关推荐 这里总结下android中关于手机屏幕 ...

  4. airtest获取手机分辨率,通过相对坐标定位元素

    airtest做自动化时,在不同手机间由于分辨率不同,绝对坐标就不适用了,需要通过相对坐标来定位,这就需要获取当前手机的分辨率,其实只需要一句代码即可获取当前手机的分辨率,下面是相关代码: w,h=d ...

  5. Android - xml动画,识别手势动作,代码抽取,获取手机SIM卡串号,获取联系人数据,开机广播,发送/解析短信,报警音乐

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72878059 1.Activity的任务栈 1.类似一个木桶,每层只能放一个木块,我 ...

  6. Unity 获取手机触摸方法

    Unity 中获取手机触屏的方法,,, 触屏函数写在Update()中,用于实时监测,,方法很好用我做2048的时候用过了,,,下面是示例代码,分享给大家,,, //有触摸点,且滑动if(Input. ...

  7. Android适配 获取手机屏幕的分辨率

    如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情. 首先:你需要在AndroidManifest.xml文件的<man ...

  8. (简单详细)React Native获取手机当前经纬度,(通过高德地图接口)获取当前地理位置

    要获取手机的当前地理位置,首先要获得经纬度,然后通过逆地理编码获得位置信息 地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能 ...

  9. Unity之正确设置手机显示布局获取手机朝向

    目录 Unity之正确设置手机显示布局 && 获取手机朝向 前言 开篇 Unity版本及使用插件 正题 设置手机屏幕显示布局.Screen.orientation 获取手机当前朝向.I ...

最新文章

  1. 偏依赖图(Partial Dependence Plots)是什么?排列重要性(Permutaion Importance)是什么?如何解读?有什么意义?
  2. golang bytes包 []byte 字节切片 简介
  3. 第19节 项目整体绩效评估.
  4. linux中mysql如何删除库,Linux环境下MySQL基础命令(2)----查看、创建、删除库和表...
  5. 使用C#实现Windows下无焦点窗体
  6. java迪杰斯特拉算法_迪杰斯特拉算法完整代码(Java)
  7. 智能优化算法——遗传算法(C语言实现)
  8. linux数据库可视化工具_适用于Linux的数据可视化工具
  9. 数学分析教程(科大)——1-(1~10)小节
  10. 【echarts】柱状图上方显示数值
  11. 监控摄像头角度范围计算方法
  12. windows升级卡在配置更新96%
  13. Unity|一键复制log日志|小技巧
  14. 路由器的静态路由配置以及OSPF动态配置
  15. 本体(Ontology)综述
  16. centos7网卡问题
  17. Web学习(二)CSS
  18. java线程池介绍(一)
  19. 山茶花粉中咖啡因酪氨酸酶抑制剂活性的研究
  20. 众享比特中标中电投电力工程有限公司区块链项目

热门文章

  1. 干货丨时序数据库DolphinDB文本数据加载教程
  2. 二本理科计算机专业大学,理科计算机强的二本大学排名
  3. 华为云数据库GaussDB(for OpenGauss)的连接
  4. django 进阶-- 模型
  5. 运行sql快还是java代码快,让Java代码跑得更快
  6. 【题解】[牛客网NOIP赛前集训营-提高组(第七场)]C.洞穴 倍增优化DP+bitset
  7. 邮件服务器之SMTP协议分析
  8. 基于多特征的遥感影像阴影提取(python+matlab代码)
  9. AndroidStudio 更改变量名和文件名的快捷键
  10. 拓嘉启远电商:拼多多用户量居电商平台之首的原因