【问题标题】:Android location listener for all services所有服务的Android位置监听器
【发布时间】:2011-04-03 10:50:28
【问题描述】:

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

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

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

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

感谢您的帮助

【问题讨论】:

    标签: android locationmanager locationlistener


    【解决方案1】:

    您是否考虑过使用PASSIVE_PROVIDER?这与getLastKnownLocation() 相结合可能会让您获得所需的大部分内容...如果设备已经知道一个位置,您最初会调用getLastKnownLocation() 来建立一个位置,然后PASSIVE_PROVIDER 将侦听来自任何位置提供程序(即从设备上的任何其他应用程序触发的位置请求)。

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

    【讨论】:

    • 我实际上正在使用getLastKnownLocation() 函数以及APPWIDGET_UPDATEupdatePeriodMillis,但我也在尝试添加检测显着运动的功能。我会试一试。