是否可以使用 Google 的新融合位置提供程序模拟位置?

Posted

技术标签:

【中文标题】是否可以使用 Google 的新融合位置提供程序模拟位置?【英文标题】:Is possible to mock locations with Google's new fused location provider? 【发布时间】:2013-09-26 09:22:30 【问题描述】:

是否可以让 FakeGPS 等应用程序与新的融合位置提供程序(Google Play 服务)一起使用?

我认为这是问题所在:

09-20 17:18:41.842  21753-21809/? W/LocationManager﹕ java.lang.IllegalArgumentException: Incomplete location object, missing timestamp or accuracy? Location[gps 32.899542,-100.165065 acc=1 et=?!? alt=65.0]
        at android.location.LocationManager.setTestProviderLocation(LocationManager.java:1218)
        at com.lexa.fakegps.FakeGPSProvider.run(FakeGPSProvider.java:75)

【问题讨论】:

我认为此类应用需要更新以支持将模拟位置提供给 LocationClient via setMockMode()setMockLocation() 【参考方案1】:

Fused Location Provider 只能使用 setMockMode() 和 setMockLocation() 提供的模拟位置。调用 android.location.LocationManager.setTestProviderLocation() 对 Fused Location Provider 生成的位置没有影响。

尽管 FakeGPS 不会为 Fused Location Provider 做任何事情,但新的 Mock Locations Android 培训课程:Testing Using Mock Locations 包含一个示例应用,可将模拟位置注入 Fused Location Provider。

【讨论】:

注意:“使用模拟位置进行测试”使用已弃用的类 LocationClient。 “使用模拟位置进行测试包括一个将模拟位置注入 Fused Location Provider 的示例应用程序。”在哪里? 他们改变了 API。 Fused Location Provider 是 Google Play 服务的一部分。随时可能发生变化!我编写的原始文档已被删除,这让我相信他们(再次)改变了一切。

以上是关于是否可以使用 Google 的新融合位置提供程序模拟位置?的主要内容,如果未能解决你的问题,请参考以下文章

融合位置 GPS 在打开 Google 地图之前不会更新

融合位置 API 运行时权限错误

当应用程序和设备中的 Google Play 服务不同时,使用融合位置获取 CurrentLocation 0

使用融合位置提供程序获取用户当前位置

使用 Google Play 服务我可以在离线模式下获取最新位置吗(FusedLocationProvider Api)

无法使用 Google 的融合位置 API 获取位置