Android应用仅在其他应用使用Marshmallow上的位置时更新位置

时间:2016-03-01 16:01:45

标签: android gps location broadcastreceiver android-6.0-marshmallow

所以我有一个应用程序可以在许多设备上完美运行。问题出在Android 6的一部特定手机上。

我们的应用程序的位置仅在其他应用程序使用GPS时才有效。 例如,启动我们的应用程序,GPS图标就像GPS处于活动状态一样启动,但应用程序上的位置更新不会显示或刷新。然后,我们启动Google地图,然后我们的应用上的位置才开始刷新。只要我们关闭Google地图,我们的位置就会停止接收。

我实际上在Android 6的另一部手机上测试了该应用,没有任何问题。

我认为Google Play服务或新的权限架构可能存在某种问题。或者也许BroadcastReceiver接收位置更新。

关键信息:

  • 我们的应用程序使用Google API为SDK 22编译。
  • 手机上的Google Play服务版本问题是8.4.92
  • 该应用使用此版本的播放服务: compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.google.android.gms:play-services-location:7.+' compile 'com.google.android.gms:play-services-maps:7.+' compile 'com.google.android.gms:play-services-gcm:7.+'
  • 为该手机上的应用激活了所有权限。
  • 有问题的手机在更新到Android 6.0之前工作正常
  • 我们在使用Android 6.0的其他设备上进行了测试,没有任何问题。
  • 手机位于另一个大洲的客户端,因此我们无法访问调试或日志。不会发生错误,因为我们会在Fabric.io上收到错误。
  • 我们使用广播向服务和活动发送新职位,因此可能存在问题。

我的选项和测试用完了。

有什么想法吗?

谢谢,

修改

问题是在该版本的Android上,来自Location的getSpeed总是0.0,除非另一个应用程序正在使用该位置,然后我们获得包含速度的更新。

这听起来像个错误。为什么遗留应用程序无法在该位置获得速度?假设它是因为我们使用API​​ 22。

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

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

0 个答案:

没有答案