Android应用程序仅在其他应用程序使用棉花糖上的位置时更新位置

Android应用程序仅在其他应用程序使用棉花糖上的位置时更新位置,android,gps,location,broadcastreceiver,android-6.0-marshmallow,Android,Gps,Location,Broadcastreceiver,Android 6.0 Marshmallow,因此,我有一个在许多设备上都能完美运行的应用程序。问题出在一款安卓6手机上 只有当其他应用程序使用GPS时,我们应用程序的位置才起作用。 例如,启动我们的应用程序时,GPS图标会启动,就好像GPS处于活动状态,但应用程序上的位置更新不会出现或刷新。然后,我们启动谷歌地图,只有到那时,我们应用程序上的位置才会开始刷新。一旦我们关闭谷歌地图,我们的位置就会停止接收 实际上,我在另一部安卓6手机上测试了该应用程序,没有出现任何问题。 我认为Google Play服务或新的权限模式可能存在某种问题。或者

因此,我有一个在许多设备上都能完美运行的应用程序。问题出在一款安卓6手机上

只有当其他应用程序使用GPS时,我们应用程序的位置才起作用。 例如,启动我们的应用程序时,GPS图标会启动,就好像GPS处于活动状态,但应用程序上的位置更新不会出现或刷新。然后,我们启动谷歌地图,只有到那时,我们应用程序上的位置才会开始刷新。一旦我们关闭谷歌地图,我们的位置就会停止接收

实际上,我在另一部安卓6手机上测试了该应用程序,没有出现任何问题。

我认为Google Play服务或新的权限模式可能存在某种问题。或者广播接收器接收到位置更新

关键信息:

  • 我们的应用程序使用谷歌API为SDK 22编译
  • Google Play服务在手机上发布的版本是8.4.92
  • 应用程序使用此版本的播放服务:
    
    编译'com.android.support:appcompat-v7:22.2.0'
    编译'com.google.android.gms:play services位置:7.+'
    编译'com.google.android.gms:play services maps:7.+'
    编译'com.google.android.gms:play services gcm:7.+'
    
  • 该手机上我们的应用程序的所有权限均已激活
  • 有问题的手机在升级到Android 6.0之前工作正常
  • 我们在另一台安卓6.0设备上进行了测试,没有任何问题
  • 手机位于另一个大陆的客户机中,因此我们无法访问调试或日志。但不会发生错误,因为我们将在Fabric.io上接收这些错误
  • 我们使用广播向服务和活动发送新位置,因此问题可能存在
我的选项和测试都快用完了

有什么想法吗

谢谢

编辑

问题是,在该版本的Android上,getSpeed from Location始终为0.0,除非另一个应用程序正在使用该位置,否则我们将获得包含速度的更新

这听起来真像一个bug。为什么旧版应用程序无法在该位置获得同样的速度?假设是因为我们使用API 22

另一方面,当手机静止不动时,我们使用速度过滤位置并停止更新位置。这就是为什么我们没有看到位置更新


我想我们必须计算自己的速度。

好的,关键信息是手机丢失了。检查我的编辑,Location.getSpeed始终为0.0,我们在静止时过滤掉位置。