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

时间:2011-04-03 00:49:48

标签: android locationmanager locationlistener

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

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

但是,我不需要一个精确的位置,但我会尽力而为。有没有办法创建一个在给定时间内最佳可用的侦听器,而无需为每个提供程序创建一个侦听器?

e.g。使用GPS,如果可用,如果没有,网络等。此外,这是一个小部件,所以我不想检查什么是可用的,然后创建一个监听器,因为小部件将持续很长时间并且可能通过启用/禁用提供商生活。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

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