• 支持GPS的核心API


    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对象中获取定位信息。

  • 相关阅读:
    性能优化随笔
    Linux文件类型及如何查看,修改文件读写权限
    ngx_pagespeed
    用U盘安装Linux系统的简单方法
    Maven 3 入门 安装与配置
    CentOS 6.2 安装教程
    各种代码文件中的注释格式
    Linux下的WebLogic安装部署
    Win8常用快捷键
    Jenkins入门总结
  • 原文地址:https://www.cnblogs.com/jiww/p/5653233.html
Copyright © 2020-2023  润新知