我找到了很多创建位置监听器的示例,您可以在其中提供特定的提供程序,如下所示:
LocationManager lm =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
但是,我不需要一个精确的位置,但我会尽力而为。有没有办法创建一个在给定时间内最佳可用的侦听器,而无需为每个提供程序创建一个侦听器?
e.g。使用GPS,如果可用,如果没有,网络等。此外,这是一个小部件,所以我不想检查什么是可用的,然后创建一个监听器,因为小部件将持续很长时间并且可能通过启用/禁用提供商生活。
感谢您的帮助
答案 0 :(得分:1)
您是否考虑过使用PASSIVE_PROVIDER
?与getLastKnownLocation()
结合使用可能会让您获得所需的大部分内容...如果设备已经知道某个位置,那么您最初会调用getLastKnownLocation()
,然后PASSIVE_PROVIDER
将从任何位置提供程序侦听更新(即,从设备上的任何其他应用程序触发的位置请求)。
仍然可能存在没有其他应用请求位置的情况,因此您可能希望使用GPS_PROVIDER
或NETWORK_PROVIDER
触发至少一个初始位置修复。