【问题标题】:Checking GPS status with Google Play Services使用 Google Play 服务检查 GPS 状态
【发布时间】:2013-06-11 21:26:41
【问题描述】:

Google 建议现在使用Google Play Services 来管理用户位置。 但是我们如何使用这个 API 来检查设备是否打开了 GPS,或者我们是否仍然有 GPS 连接?

在com.google.android.gms.location.LocationListener 中,我们只有一个方法abstract void onLocationChanged(Location location),它在位置改变时被调用,但我们不知道任何关于GPS 状态的信息。

如何像“旧”LocationManager 和LocationListener 一样使用Google Play Services?

【问题讨论】:

  • 使用 GPS 是指系统 -> 设置中的位置开关?

标签: android gps location google-play-services location-client


【解决方案1】:

但是我们如何使用这个 API 来检查设备中的 GPS 是否打开,或者我们是否仍然有 GPS 连接?

你不能,AFAICT。我想理由是,由于LocationClient 正在混合来自多个来源的数据,因此没有 API 可以确定是否使用了任何特定来源。

如果您想确定是否启用了 GPS,则需要使用 LocationManager。

【讨论】:

  • 所以我们实际上无法摆脱LocationManager 并且它将用于此类事情?
  • @squixy:LocationManager 提供的任何您想要通过LocationClient 无法获得的东西,您仍然需要使用LocationManager。将LocationClient 视为LocationManager 的附加组件,而不是替代。
  • @CommonsWare - LocationClient 似乎返回一个非空位置,Google 位置设置也必须启用。找不到用于了解此设置的 api 调用或打开此设置页面的意图操作。是否有任何示例代码使用 LocationManager 来确定是否启用了位置访问(以及启用了 WiFi 和移动网络)?
  • @raj:在LocationManager 上致电isProviderEnabled()。
  • @CommonsWare 如果 Location access 已启用但 Wi-Fi & mobile network location 未在其中启用,则 Location 为空。我尝试禁用Location access 和Google location settings 中启用的所有内容,但位置为空。 (我现在仔细检查了它,它似乎返回了一个非空的Location,不确定它是否是它提供者的缓存/最后一个已知位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 2017-01-07
相关资源
最近更新 更多