• 咨询热线:0755 - 2708 7827
首页 > 新闻资讯 > 非常规系统中进行GPS开发注意事项

非常规系统中进行GPS开发注意事项

定位技术

2020年03月05日

在Android中进行GPS开发,需要涉及LocationManager、LocationProvider、Location三个类。LocationManager类的作用与TelephonyManager、AudioManager等服务类的作用相似,所有GPS定位相关的服务、对象都将由该对象来产生。与程序中获取TelephonyManager、AudioManager的方法相似 ,程序中获取LocationManager的实例是通过调用Context的getSystemService()方法来获取,LocationManager lm = getSystemService(Context.LOCATION_SERVICE);一旦在程序中获得了LocationManager对象之后接下来即可调用LocationManager的方法来获取GPS定位的相关服务和对象。定位提供者LocationProvider是GPS定位组件的抽象表示,Android的定位信息就是由它提供的,即,通过LocationProvider类的方法可以获取定位组件的相关信息。

Location是位置信息的抽象类,它提供了大量用来获取定位信息的方法。

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

(1) 获取系统的LocationManager对象。

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

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


当前模拟器所有可用的LocationProvider有如下三个:

Ø network:由LocationManager.NETWORK_PROVIDER常量表示,它代表通过无线信号基站或Wi-fi网络获取定位信息的LocationProvider对象。

Ø passive:由LocationManager.PASSIVE_PROVIDER常量表示。

Ø gps:由LocationManager.GPS_PROVIDER常量表示,它代表通过GPS卫星获取定位信息的LocationProvider对象。

LocationManager类提供了访问定位服务的功能,该类提供了如下常用的方法。

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

Ø void  addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent)设置当临近某指定位置(经度,纬度)和半径的位置时的警告信息。

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

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

Ø GpsStatus  getGpsStatus(GpsStatus status)获取GPS状态。

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

Ø LocationProvider  getProvider(String name)根据名称来获取LocationProvider。

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

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

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

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

Ø void  removeProximityAlert(PendingIntent intent)删除一个临近警告。

Ø void  requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)通过指定的LocationProvider周期性地获取定位信息,并通过intent启动相应的组件。

Ø void  requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)


通过指定的LocationProvider周期性地获取定位信息,并触发Listener所对应的触发器

我们通过调用LocationManager的getAllProviders方法获取所有LocationProvider时返回的是List<String>集合,集合元素即为LocationProvider的名称。我们还可以借助于LocationManager的getProvider(String name)方法,获取指定名称的LocationProvider对象。


但大部分时候,应用程序可能希望得到符合指定条件的LocationProvider,这就需要借助于LocationManager的getBestProvider(Criteria criteria,boolean enabledOniy)方法来获取。除了利用LocationManager类来获取LocationProvider外,我们还可以借助Criteria类来获取符合指定条件的LocationProvider。Criteria提供如下常用的方法来设置条件。


Ø void  setAccuracy(int accuracy)设置对LocationProvider的精度要求。

Ø void  setAltitudeRequired(boolean altitudeRequired)设置要求LocationProvider能提供高度信息。

Ø void  setBearingRequired(boolean bearingRequired)设置要求LocationProvider能提供方向信息。

Ø void  setCostAllowed(boolean costAllowed)设置要求LocationProvider是否免费。

Ø void  setPowerRequirement(int level)设置要求LocationProvider的耗电量。



声明:以上内容来源于互联网,如有侵权请联系删除,出于分享信息及学习之目的,不代表本网站的观点、本站不对其真实性负责。

最新资讯

  • 当发现汽车GPS定位器离线时怎么办?(下)

  • 强烈的太阳风暴如何影响各类型GPS定位器

  • 车载GPS生产厂家常说的单层板和双层板

  • 普通车载GPS定位难以实现车道级定位

  • 详解汽车GPS定位器与油耗监控系统结合

  • 为什么车载GPS定位器无法在地下车库使用?

  • 车载GPS定位常用通信芯片的优劣势分析

  • 汽车在隧道里还能适用车载GPS定位器吗?

  • 汽车GPS定位器在金融风控管理方面的作用?

  • 智能手表在室内定位 车载GPS终端不行?