参考资源:android 4种定位原理及实现——1

android使用不同的方法为应用提供位置信息。

定位的方式有三种:GPS地位(A-GPSAssistedGPS:辅助全球卫星定位系统,或者是同步GPS(S-GPS)),网络定位,被动获取定位信息(应用不必显示从LocationManager请求位置更新信息,就能获取位置数据。即从其他应用中获得请求得到的位置信息)

这些信息成为信息提供者LocationProvider

Android中定义的位置提供者

  • 网络定位NETWORK_PROVIDER
  • GPS定位GPS_PROVIDER
  • 被动定位PASSIVE_PROVIDER

组合定位FUSED_PROVIDER(这个是被隐藏的变量,不能直接使用,好像我都没有遇见过哦*~*)

  GPS定位利用多个卫星至GPS接收器的距离,使用三角定位确定当前的位置,最少需要三个卫星才可以确定一个二维的位置(经度和纬度)。

  如果和更多的卫星通信,GPS接收器可以确定如海拔信息(虽然海拔确定的不准确。。。。)等更多位置信息

  优点:提供精确的位置数据

  GPS缺点:定位时间较长,耗电,GPS接收器在看不到天空的地方无法使用,所以在室内定位出错

  A-GPS:通过移动网络将GPS历书(星历的集合:接收到的卫星的位置信息的集合)和其他信息传输到移动设备。即基站代送信息到移动设备。这使得gps在室内 也可以使用

  网络定位:

  • 使用无线网络WiFi接入点提供位置信息---比GPS硬件更省电

1、每一个无线AP(路由器)都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内不会移动;

2、设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址;

3、设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备;

4、位置服务商要不断更新、补充自己的数据库,以保证数据的准确性。

  基站定位

  第一种基站定位和GPS类似使用三角定位。移动设备通过电磁波在三个基站中转所需时间计算出设备所在坐标(基站的位置是固定的)

  第二种则是利用获取最近的基站的信息,其中包括基站 id,location area code、mobile country code、mobile network code和信号强度,将这些数据发送到google的定位web服务里,就能拿到当前所在的位置信息,误差一般在几十米到几百米之内。其中信号强度这个数据很重要。

  被动定位

这个是在前两者基础上通过其他应用使用前两种方式传送位置数据到当前应用

android学习-LocationManager(一)-定位方式原理解析的更多相关文章

  1. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  2. Android 上SuperUser获取ROOT权限原理解析

    Android 上SuperUser获取ROOT权限原理解析 一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. ...

  3. [android] 手机卫士手机定位的原理

    手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几公里的误差 GPS定位,至少需 ...

  4. Android中几种定位 方式

    介绍的几种定位方式 http://www.cnblogs.com/cuihongyu3503319/p/3863867.html 百度地图api: http://lbsyun.baidu.com/in ...

  5. Android 学习笔记之Volley开源框架解析(二)

    PS:Volley已经学完,可以安心的写一下博客总结一下了... 学习内容: 1.Request的完整封装... 2.RetryPolicy,DefaultRetryPolicy(请求重试策略源码解析 ...

  6. Android 学习笔记之Volley开源框架解析(五)

    学习内容: 1.PoolingByteArrayOutputStream 2.ByteArrayPool 3.HttpStack 4.HurlStack 5.HttpHeaderParser   前面 ...

  7. Android 学习笔记之Volley开源框架解析(四)

    学习内容: 1.NetWorkDispatcher网络请求线程调度... 2.NetWork网络请求抽象类... 3.BasicNetWork网络请求抽象类的具体实现... 4.NetWorkResp ...

  8. Android 学习笔记之Volley开源框架解析(一)

    PS:看完了LGD的六场比赛...让人心酸... 学习内容: 1.Http请求的过程... 2.Volley的简单介绍...   1.Http请求...   这里只是简单的说一下Http请求的过程.. ...

  9. Android 学习笔记之Volley开源框架解析(三)

      学习内容: 1.CacheDispatcher缓存请求调度... 2.Cache缓存数据的保存... 3.DiskBasedCache基于磁盘的缓存类实现方式...   前面说到使用Volley发 ...

随机推荐

  1. (并查集 建立关系)食物链 -- POJ-- 1182

    链接: http://poj.org/problem?id=1182 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...

  2. Codeforces777C Alyona and Spreadsheet 2017-05-04 17:46 103人阅读 评论(0) 收藏

    C. Alyona and Spreadsheet time limit per test 1 second memory limit per test 256 megabytes input sta ...

  3. IT人员如何有效规划自己时间

          中午和任职 DBA 的朋友聊天,他说:"老板老是要我把工作时间填长一点,让整个部门的工作时间比较好看,所以本来做 1 个小时的事要写 3 个小时."但我回答说若这件事情 ...

  4. 分离 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 理解ValueStack的基本机制 OGNL表达式

    ValueStack基础:OGNL(Object Graphic Navigatino Language) OGNL是Struts2中使用的一种表达式语言. 它可以用于,在JSP页面,使用标签方便的访 ...

  6. Jenkins中执行docker命令报错

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?   在配置Jenkins从Gitlab自 ...

  7. 在centos docker中安装nvidia驱动

    因为计算需要用到GPU加速, 今天尝试在centos 机器的Docker里安装了GTX980驱动, 记录一下详细安装过程. 首先安装Docker和镜像: sudo yum install docker ...

  8. LeetCode144:Binary Tree Preorder Traversal

    题目: Given a binary tree, return the preorder traversal of its nodes' values. For example: Given bina ...

  9. Ocelot中文文档入门

    入门 Ocelot仅适用于.NET Core,目前是根据netstandard2.0构建的,如果Ocelot适合您,这个文档可能会有用. .NET Core 2.1 安装NuGet包 使用nuget安 ...

  10. winform :DataGridView添加一列checkbox

    #region 添加checkbox列   public void AddCheckBox()        { DataGridViewCheckBoxColumn columncb = new D ...