手机定位的基本原理

移动开发 移动应用
目前智能手机的使用已经越来越普遍,手机定位也是手机上的一个核心基础功能。举一个常见的应用如叫车,司机需要知道你在哪里,同时打车软件也需要基于司机和乘客的位置规划一条路线,让司机更高效的行驶到用户这里。这就是典型的定位服务的应用。

目前智能手机的使用已经越来越普遍,手机定位也是手机上的一个核心基础功能。举一个常见的应用如叫车,司机需要知道你在哪里,同时打车软件也需要基于司机和乘客的位置规划一条路线,让司机更高效的行驶到用户这里。这就是典型的定位服务的应用。当然,除去这种应用,用户位置本身的展示,也是地图产品中不可缺少的。那么app是如何得知当前设备所处的位置的呢?

 

手机定位的基本原理

可用于无线定位的信号:①GPS信号②基站信号③wifi信号,以上三种是最常用的定位方式,此外还有蓝牙/IP/地磁场等手段

通常智能手机有以下两种定位方式:

一,调用系统级定位能力:

无论哪个系统(IOS、安卓、WP)都提供了一套系统级定位能力,这样的定位能力,对应着是一套系统级API,这个API一般来说,总是会有如下几个

精度的选项:

  • 高精度:能搜到GPS卫星,则使用GPS定位,否则,则使用WIFI定位,如果WIFI和GPS都无法定位成功,只能根据基站来给出定位结果了。
  • 平衡功耗:禁用GPS(因为它非常耗电),优先使用WIFI,如果WIFI不可用,则用基站来进行定位。
  • 低功耗(被动定位):根据不同系统的规定,实现方式也不同,但大体上都是共享其他app的定位结果,即其他app以高精度、平衡功耗的方式得到位置,那么这个位置也一并推送给当前使用“低功耗定位”的app,也就是该app不消耗额外的能耗,就完成了定位。

当然,这种系统级定位能力是有着软肋的,软肋在于以下两点:①在基站、WIFI定位能力上,系统定位能力取决于系统自己在这方面投入数据收集推算的能力,这个是参差不齐的。举个简单的例子,百度和高德在中国采集了成百上千个公共场所的室内定位信息,使之能达到米级的室内定位,苹果做了吗?谷歌做了吗?微软做了吗?他们怎么和国内的服务商拼效果?

 

[[319383]]

二、调用第三方定位SDK

对于可以公开读取基站、WIFI信息的Android手机系统,国内的百度、高德等地图厂商自行实现了定位SDK,该定位SDK的作用就是通过系统接口读取到原始定位信息,然后借助于各家自行部署维护的数据库,查询到当前扫描到的基站、WIFI的位置,最终计算出更准确的定位结果,通过SDK的接口,返回给开发者。这么做的好处,在于能够让app的定位能力脱离对手机系统的依赖。

举个例子,一个app他如果只是调用系统定位接口,那么在行货手机,由于手机厂商已经把定位的网络服务器重定向为国内定位服务商,所以肯定可以定位,但是在水货手机上因为系统底层是直接连google服务器的,就会无法定位。但用户就是上帝,出现了这个事情在用户看来,就是不能接受的,为了保证app在所有手机上都可以定位,开发者就会不得不使用第三方的独立定位SDK。

 

手机定位的基本原理

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2012-01-12 14:37:34

jQuery

2013-04-07 14:09:55

Android应用基本

2010-08-20 13:29:33

OFDM

2011-11-29 12:17:00

2009-02-24 09:43:00

IP电话原理

2010-03-17 13:35:02

2021-02-08 21:40:04

SockmapBPF存储

2016-08-17 23:53:29

网络爬虫抓取系统

2016-08-18 00:04:09

网络爬虫抓取系统服务器

2019-11-28 10:45:28

ZooKeeper源码分布式

2020-11-26 13:54:03

容器LinuxDocker

2010-06-18 17:28:37

Linux Anacr

2011-07-07 14:46:10

Cocoa Xcode

2010-03-18 20:13:03

Java socket

2011-07-07 14:10:21

Cocoa 内省 hash

2020-12-29 16:55:44

ZooKeeper运维数据结构

2009-06-11 09:56:09

MySQL Repli原理

2010-09-15 15:48:09

CSS Hack

2021-04-27 19:21:48

HBase原理开源

2015-01-19 15:47:02

FCoE一体化
点赞
收藏

51CTO技术栈公众号