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 不触发
在 Android 设备上未调用 onLocationChanged()