OnLocationChanged 未在某些设备上触发

Posted

技术标签:

【中文标题】OnLocationChanged 未在某些设备上触发【英文标题】:OnLocationChanged not fired on some devices 【发布时间】:2017-01-26 08:36:15 【问题描述】:

我知道有很多“类似”的问题,但没有一个提供有用的答案。

我正在尝试收听来自网络和 GPS 的位置更新。 LocationListener 初始化非常标准:

locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 15000, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 15000, 0, locationListener);

我在三星 Galaxy S4 (SM-N910F) 和 LG G Flex 2 (H950) 这两款设备上进行了测试。在第一个设备上 onLocationChanged 按预期调用(仅来自“网络”提供程序),而第二个设备永远不会触发该事件。

两个设备都设置为“高精度”模式。我在 Wi-Fi 和 4G LTE 连接上尝试了第二台设备。由于我使用 Google Maps API,我可以清楚地看到用户标记在地图上移动,但从未调用过该事件。

知道为什么onLocationUpdated 永远不会在第二台设备上调用吗?

此外,我了解到 GPS 需要很长时间才能修复。向 GPS 提供商请求更新有什么意义吗?

谢谢!

【问题讨论】:

【参考方案1】:

我建议您开始使用 Google Play 位置 API。

Google Play 服务位置 API 优于 android 框架位置 API (android.location) 作为添加位置的一种方式 对您的应用的认识。如果您当前使用的是安卓 框架位置 API,强烈建议您切换到 尽快提供 Google Play 服务位置 API。

https://developer.android.com/training/location/index.html

【讨论】:

以上是关于OnLocationChanged 未在某些设备上触发的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 位置服务 OnLocationChanged 不触发

Unity Button 文本未在某些设备上显示

Android 活动未在某些设备上启动(错误膨胀类)

在 Android 设备上未调用 onLocationChanged()

OnLocationChanged 将不再工作,在许多设备上

在 Android 中未调用 onlocationchanged