目录
13.传感器与定位服务(三)
4.位置服务
在开发Android 位置相关应用时,可以从GPS(全球定位系统)或者网络获得用户位置。通过GPS能获得最精确的信息。例如,在某些外卖软件的“选择收货地址”页面中,不仅定位了当前所在城市,而且附近地址也被列出;再如,某些天气软件能够自动定位当前所在城市。
对于开发Android应用的程序员来说,开发GPS功能的应用程序非常简单。在Android系统中,开发人员需要使用以下类访问定位服务。
◆LocationManager:该类提供系统定位服务访问功能。
LocationManager提供的常用方法如表13.4 所示。
表13.4 LocationManager 提供的常用方法
方法名 | 描述 |
---|---|
List<String> getAllProviders | 获取所有的LocationProvider列表 |
Location getLastKnownLocation(String provider) | 根据LocationProvider获取最近一次已知的 Location |
LocationProvider getProvider(String name) | 根据名称来获取LocationProvider |
void requestLocationUpdates (String provider, long minTime,float minDistance, PendingIntent intent) | 通过指定的LocationProvider周期性地获取定位信息,并通过intent启动相应的组件 |
void requestLocationUpdates (String provider, long minTime,float minDistance, LocationListener listener) | 通过指定的LocationProvider周期性地获取定位信息,并触发listener所对应的触发器 |
◆LocationProvider:定位组件的抽象表示,通过该类可以获取该定位组件的相关信息。
LocationProvider提供的常用方法如表13.5所示。
表13.5 LocationProvider 提供的常用方法
方法名 | 描述 |
---|---|
int getAccuracy() | 返回LocationProvider的精度 |
String getName() | 返回LocationProvider的名称 |
int getPowerRequirement() | 获取LocationProvider的电源需求 |
◆Location:该类表示特定时间的地理位置信息,位置由经度、纬度、UTC时间戳以及可选的高度、速度、方向等组成。
Location提供的常用方法如表13.6所示。
表13.6 Location 提供的常用方法
方法名 | 描述 |
---|---|
float getAccuracy() | 获取定位信息的精度 |
double getAltitude() | 获取定位信息的高度 |
float getBearing() | 获取定位信息的方向 |
double getLatitude() | 获取定位信息的纬度 |
double getLongitude() | 获取定位信息的经度 |
String getProvider() | 获取提供该定位信息的LocationProvider |
float getSpeed() | 获取定位信息的速度 |
上面的3个类就是GPS定位支持的3个核心,使用它们获取GPS定位信息的一般步骤如下:
(1)获取系统的LocationManager对象。
(2)使用LocationManager,通过指定LocationProvider来获取定位信息,定位信息由Location对象来表示。
(3)从Location对象中获取定位信息。
4-1.获取LocationProvider
LocationProvider是位置源的意思,用来提供定位信息。在获取定位信息之前,需要先获得LocationProvider对象。常用的LocationProvider如表13.7所示。
表13.7 常用的 LocationProvider
方法名 |
---|