Google 建议您在需要位置信息服务的应用中使用 Google Play 服务中的 Location API 和 Context API。如果您的应用使用框架位置 API,请务必先迁移到 Google Play 服务,以便充分利用由 Google 提供强有力技术后盾的最新功能。
使用 Google Play 服务是在应用中获取位置信息服务的首选方式,原因如下:
- Google Play 服务提供了一个简单的接口和更简洁的 API Surface。
- 您可以指定所需的服务质量,API 会为您管理底层技术。
- Google Play 服务 API 针对性能和电池用量进行了优化。
- Google Play 服务 API 得到了积极维护。Google 还在不断改进算法并增加更多功能。
更新应用
以下步骤介绍了更新应用以使用 Location API 和 Context API 的过程:
- 在您的项目中设置 Google Play 服务。
- 使用 Location Settings API 验证当前的位置信息设置。
- 将 Google Play 服务用于地理围栏、运动状态识别和感知等复杂功能。
- 将 Framework Location API 替换为 Fused Location Provider API。
- 移除对 Framework Location API 的引用。
在项目中设置 Google Play 服务
如需在项目中使用 Location API 和 Context API,您必须添加对 Google Maven 制品库的引用,并声明依赖所需 API。如需了解详情,请参阅设置 Google Play 服务。
使用 Location Settings API
通过使用 Location Settings API,应用可提供所需的服务质量 (QoS) 级别,并且此 API 会请求用户对系统设置进行适当的更改。如需在应用中使用 Location Settings API,请按以下步骤操作:
- 在应用清单中请求位置权限。
- 设置用于指定所需服务质量 (QoS) 级别的
LocationRequest
对象。 - 使用 Location Settings API 检查当前设置。
如需了解详情,请参阅更改位置信息设置;如需查看示例代码,请参阅 Google Play 位置示例。
使用 Google Play 服务实现复杂功能
Google Play 服务库可帮助您围绕情境和用户周围环境感知来实现全新的用户体验。各种位置信息和情境库除了利用位置信息外,还会利用其他传感器,而且是以省电的方式这样做,从而为您的应用提供更准确的数据,同时减少对电池续航时间的影响。
在应用中纳入这些库,而不是自行编写自定义解决方案:
将 Framework Location API 替换为 Fused Location Provider API
您可以使用 Fused Location Provider API 获取纬度和经度等位置数据。Fused Location Provider API 像 Location Framework API 一样,使用 Location
对象来表示地理位置。该 API 提供的功能可监听位置信息更新以及获取最近一次的已知位置。所有这些功能使 Fused Location Provider API 非常适合替代使用 Framework Location API 的组件,需对应用其余部分做出的改动非常少。
获取最近一次的已知位置是在许多方面实现良好体验的基础,因为它是一项快捷操作,可以使用设备上任意客户端请求的位置数据。如需定期跟踪位置信息,您的应用可以订阅接收位置信息更新,获取最新数据并实现更复杂的体验。
移除对 Framework Location API 的引用
将对 com.google.android.location
软件包中类的引用替换为对 com.google.android.gms.location
软件包中类的引用,但对 Fused Location Provider API 使用的 Location
类的引用除外。通常情况下,您可以从应用中移除用于管理不同提供程序(例如 GPS 和 Wi-Fi)的组件。Location API 和 Context API 会自动管理这些提供程序。
测试应用
如需运行使用最新版 Google Play 服务的应用,您需要安装了 Play 商店应用的设备并且必须登录 Google 账号。出于开发目的,您可以使用以下选项:
- 使用 USB 线连接到开发环境的实体设备。
- 安装了 Play 商店应用的模拟器。
如需详细了解如何将实体设备连接到开发环境,请参阅在硬件设备上运行应用。如需创建包含 Play 商店应用的模拟器,请参阅创建和管理虚拟设备。