Android为GPS功能支持专门提供了一个LocationManager类,它的作用于TelephonyManager、AudioManager等服务类的作用相似,所有GPS定位相关的服务、对象都将有该对象来产生。

与程序中获取TelephonyManager、AudioManager的方法相似,程序并不能直接LocationManager的实例,而是通过调用Context的getSystemService()方法来获取,例如如下代码:

LocationManager  lm  =  getSystemService(Context.LOCATION_SERVICE);

一旦在程序中获得了LocationManager对象之后,接下类即可调用LocationManager的方法来获取GPS定位的相关服务和对象了。LocationManager提供了如下常用的方法:

1、boolean  addGpsStatusListener(GpsStatus.Listener  listener):添加一个监听GPS状态的监听器。

2、void  addProximityAlert(double  latitude ,  double  longitude , float  radius , long  expiration , PendingIntent  intent):添加一个临近警告。

3、List<String>  getAllProviders():获取所有的LocationProvider列表。

4、String  getBestProvider(Criteria  criteria,  boolean  enabledOnly):根据指定条件返回最优的LocationProvider对象。

5、GpsStatus  getGpsStatus(GpsStatus  status):获取GPS状态。

6、Location  getLastKnownLocation(String  provider):根据LocationProvider获取最近一次已知的Location。

7、LocationProvider  getProvider(String  name):根据名称来获取LocationProvider。

8、List<String>  getProviders(Criteria  criteria ,  boolean  enabledOnly):根据指定条件获取满足该条件的全部LocationProvider的名称。

9、List<String>  getProviders(boolean  enabledOnly):获取所有可用的LocationProvider。

10、boolean  isProviderEnabled(String  provider):判断指定名称的LocationProvider是否可用。

11、void  removeGpsStatusListener(GpsStatus.Listener  listener):删除GPS状态监听器。

12、void  removeProximityAlert(PendingIntent  intent):删除一个临近警告。

13、void  requestLocationUpdates(String  provider , long  minTim , float  minDistance, PendingIntent  intent):通过指定的LocationProvider周期性的获取定位信息,并触发listener所对应的触发器。

在上面的方法列表中涉及一个GPS定位支持的另一个重要的API:LocationProvider(定位提供者),LocationProvider对象就是GPS定位组件的抽象表示,通过LocationProvider可以获取该定位组件的相关信息,LocationProvider提供了如下常用方法:

1、int  getAccuracy():返回该LocationProvider的精度。

2、String  getName():返回该LocationProvider的名称。

3、int  getPowerRequirement():获取该LocationProvider的电源需求。

4、boolean  hasMonetaryCost():返回该LocationProvider是收费的还是免费的。

5、boolean  meetsCriteria(Criteria  criteria):判断该LocationProvider是否满足Criteria条件。

6、boolean  requiresCell():判断该LocationProvider是否需要访问网络基站。

7、boolean  requiresNetwork():判断该LocationProvider是否需要网络数据。

8、boolean  requiresSatellite():判断该LocationProvider是否需要访问基于卫星的定位系统。

9、boolean  supportsAltitude():判断该LocationProvider是否支持高度信息。

10、boolean  supportsBearing():判断该LocationProvider是否支持方向信息。

11、boolean  supportsSpeed():判断该LocationProvider是否支持速度信息。

除此之外,GPS支持还有一个API:Location,它就是一个代表位置信息的抽象类,提供了如下方法来获取定位信息。

1、float  getAccuracy():获取定位信息的精度。

2、double  getAltitude():获取定位信息的高度。

3、float  getBearing():获取定位信息的方向。

4、double  getLatitude():获取定位信息的纬度。

5、double  getLongitude():获取定位信息的经度。

6、String  getProvider():获取提供该定位信息的LocationProvider。

7、float  getSpeed():获取定位信息的速度。

8、boolean  hasAccuracy():判断该定位信息是否有精度信息。

9、boolean  hasAltitude():判断该定位信息是否有高度信息。

10、boolean  hasBearing():判断该定位信息是否有方向信息。

11、boolean  hasSpeed():判断该定位信息是否有速度信息。

上面三个API就是Android  GPS支持的三个核心API,使用它们来获取GPS定位信息的通用步骤为:

1、获取系统的LocationManager对象。

2、使用LocationManager,通过指定LocationProvider来获取定位信息,定位信息由Location对象来表示。

3、从Location对象中获取定位信息。

支持GPS的核心API的更多相关文章

  1. GPS(1)核心API及3种列出LocationProvider的方法

    GPS的常用API Android SDK为GPS提供了很多API,其中LocationManager类是这些API的核心.所有与GPS相关的操作都由LocationManager对象及其派生的对象完 ...

  2. SDL 开发实战(二):SDL 2.0 核心 API 解析

    在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码.但是可能大部分人还是读不太明白具体Hello Wol ...

  3. hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等

    核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...

  4. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  5. java多线程核心api以及相关概念(一)

    这篇博客总结了对线程核心api以及相关概念的学习,黑体字可以理解为重点,其他的都是我对它的理解 个人认为这些是学习java多线程的基础,不理解熟悉这些,后面的也不可能学好滴 目录 1.什么是线程以及优 ...

  6. 三大框架 之 Hibernate框架概述(概述、配置、核心API)

    目录 Hibernate框架概述 什么是框架 hibernate简介(JavaEE技术三层架构所用到的技术) hibernate是什么框架 ORM hibernate好处 Hibernate基本使用 ...

  7. spark 入门学习 核心api

    spark入门教程(3)--Spark 核心API开发 原创 2016年04月13日 20:52:28 标签: spark / 分布式 / 大数据 / 教程 / 应用 4999 本教程源于2016年3 ...

  8. hibernate系列笔记(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  9. APP自动化框架LazyAndroid使用手册(3)--核心API介绍

    作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...

随机推荐

  1. csuoj 1114: 平方根大搜索

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1114 1114: 平方根大搜索 Time Limit: 5 Sec  Memory Limit:  ...

  2. Clob类型转化String类型

    Clob clob=rs.getClob(列数); Clob clob=rs.getClob("列名");String content=clob.getSubString((lon ...

  3. 夺命雷公狗-----React---1--页面的渲染

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Android开发新手学习总结(一)——使用Android Studio搭建Android集成开发环境

    [新手连载]一:使用Android Studio搭建Android集成开发环境http://bbs.itcast.cn/forum.php?mod=viewthread&tid=87055&a ...

  5. retain,copy,assign及autorelease ,strong,weak

    一,retain, copy, assign区别 1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a ...

  6. UBoot讲解和实践-------------讲解(二)

    UBoot  ARM移植之阶段二   理论篇 stage2: 1.初始化本阶段要使用的硬件设备: 通常包括两方面: 1)初始化至少一个串口,以便和终端用户进行I/O输出信息.              ...

  7. iOS性能优化:Instruments

    检测内存泄露:Instruments中的Leaks 前言 如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测. 现在的开发环境是ARC,所以很少会出现内存泄 ...

  8. js中==, !==, === ,!=的区别

    在讨论比较符的时候我们先要来讨论哈js的类型,这样有助于我们从本质上了解原理. 下面是我找的资料加上个人的总结: js中有5种数据类型:Undefined.Null.Boolean.Number和St ...

  9. android 事件监听

    步骤: 1.获取代表控件对象. 2.定义一个类,实现监听接口. 3.生成监听器对象. 4.为控件绑定监听器对象. XML <LinearLayout xmlns:android="ht ...

  10. Json概述以及python对json的相关操作(转)

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...