适用于所有服务的 Android 位置监听器

标签 android locationmanager locationlistener

我发现了很多创建位置监听器的示例,您可以在其中提供特定的提供程序,如下所示:

LocationManager lm =
    (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

不过,我不需要精确的位置,但我会选择最好的位置。有没有一种方法可以创建一个在给定时间以最佳可用方式工作的监听器,而无需为每个提供者创建一个监听器?

例如如果可用,则使用 GPS,如果不可用,则使用网络等。此外,这是一个小部件,所以我不想检查可用的内容,然后为此创建一个监听器,因为该小部件将持续很长时间并可能通过启用/禁用提供程序而存在。

感谢帮助

最佳答案

您是否考虑过使用 PASSIVE_PROVIDER ?结合getLastKnownLocation()可能会让你大部分的方式达到你想要的......如果设备已经知道一个位置,你会调用 getLastKnownLocation() 最初建立一个位置,然后是 PASSIVE_PROVIDER 会监听来自任何位置提供者的更新(即从设备上的任何其他应用程序触发的位置请求)。

仍有可能没有其他应用程序请求位置,因此您可能希望使用 GPS_PROVIDERNETWORK_PROVIDER 触发至少一个初始位置修复.

关于适用于所有服务的 Android 位置监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526828/

相关文章:

Android : Difference between LocationManager. addProximityAlert() & LocationClient.addGeofences()

android - 从 LocationManager 取消订阅 LocationListener

android - onLocationChanged 不会自动调用

找不到 xml 和命名空间中的 Android Studio 未知属性

android - 基于 React Native 的 SDK

android - GPS 在异步任务中不工作

java - Android LocationListener 崩溃

Android Location Listener 调用非常频繁

android - 将 xml 数据解析为 google map android

android - Gradle 版本 2.10 是必需的。当前版本是 2.8 错误