1

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

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

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

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

谢谢您的帮助

4

1 回答 1

1

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

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

于 2011-04-03T02:50:28.173 回答