赞
踩
在Android开发中常常须要用到定位功能,尤其是依赖于地理位置功能的应用。大家首先想到的是使用百度地图、高德地图提供的sdk,但是在只须要经纬度或者城市、街道地址等信息并不须要提供预览地图时我们考虑使用Android系统提供的API来实现。
Android SDK 提供了 android.location 包和 Google Maps API 支持位置服务功能,开发人员可以方便地开发自己的位置服务应用程序。
android 定位一般有四种方法,这四种方式分别是:GPS定位,WIFI定准,基站定位,AGPS定位
在开发过程中主要使用android.location包中的LocationManager和LocationProviders对象。
LocationManager 类用于管理 Android 用户位置服务信息,提供确定用户位置的 API,通过这个类可以实现定位、跟踪和目标趋近等功能。
LocationManager 对象可以完成以下三个方面的任务:
从用户的位置查询所有可用的 LocationProvider 列表。
从特定的 LocationProvider 周期性获取用户当前位置的功能。
当用户位置接近某个特定区域时,启动相关任务。
⭐️ LocationManager 对象不能直接实例化,可以通过 Context.getSystemService(Context. LOCATION_SERVICE) 方法获得。
常用方法:
boolean addGpsStatusListener(GpsStatus.Listener listener):添加一个监听GPS状态的监听器
void removeGpsStatusListener(GpsStatus.Listener listener):删除Gps状态监听器
List getAllProviders():获得所有LocationProvider列表
String getBestProvider(Criteria criteria,Boolean enabldOny):根据 criteria 返回最合适的 LocationProvider,其中 criteria 指定了一系列条件
Location getLastKnownLocation (String provider):获取缓存中的位置信息, 该方法不会发起监听,返回的是上一次的位置信息,但此前如果没有位置更新的话,返回的位置信息可能是错误的
LocationProvider getProvider (String name):获得指定名称的 LocationProvider
List getProviders (boolean enabledOnly):获得可用的 LocationProvider 列表
addProximityAlert (double latitude, double longitude, float radius, long expiration, PendingIntent intent):添加一个邻近警告
removeProximityAlert (PendingIntent intent):删除趋近警告
void requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent): 通过指定的LoactionProvider周期性地获取定位信息,并通过intent启动相应的组件
void requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener): 通过指定的LocationProvider周期性地获取定位信息,并触发listener所对应的触发器3
requestSingleUpdate(String provider, LocationListener listener, Looper looper):获取一次定位结果,如果不想一直监听位置信息,那么可以用requestSingleUpdate来实现只请求一次定位,该方法也要在主线程上执行
isProviderEnabled(String provider):判断provider是否可用
⭐️ LocationProvider 为位置提供者的抽象类,位置提供者提供手机设备周期性的地理位置报告。
常用方法:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。