onLocationChanged 仅使用网络提供商调用一次
Posted
技术标签:
【中文标题】onLocationChanged 仅使用网络提供商调用一次【英文标题】:onLocationChanged just called once using network provider 【发布时间】:2014-06-05 02:42:42 【问题描述】:我在使用位置监听器和位置管理器时遇到问题。
我正在使用我在 Internet 上找到的课程
public class MyLocationListener implements LocationListener
public void onLocationChanged(Location location)
home_text.setText("Location Change");
public void onStatusChanged(String provider, int status, Bundle extras)
// TODO Auto-generated method stub
public void onProviderDisabled(String provider)
// TODO Auto-generated method stub
public void onProviderEnabled(String provider)
// TODO Auto-generated method stub
当我使用 gps 提供程序时,它工作正常
locationListener = new MyLocationListener();
locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,1, locationListener);
当我使用网络提供商时,onLocationChanged 只是在开始时调用了一次,并且再也没有调用过。
locationListener = new MyLocationListener();
locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000,1, locationListener);
虽然,当我使用这两种方法打开地图时,它仍然可以找到我当前的位置并更新地图。
googleMap.setMyLocationEnabled(true);
请帮帮我...
【问题讨论】:
【参考方案1】:LocationManager.NETWORK_PROVIDER 尝试使用手机网络塔和周围的 Wifi 网络来定位设备。如果它们都没有改变,那么您将不会收到任何更新。
您是否要求更新并四处游荡(您可能需要在您的地方走一走)?
使用 GPS,随着信号的增强和越来越准确,即使您不动,您也会收到更新。
【讨论】:
我目前正在使用我的 wifi。为了测试 OnLocationChanged,我在 wifi 区域走来走去。 googleMap.setMyLocationEnabled(true) 使用此代码,我在 googlemaps 上获取了我的位置,基于此,我的位置已更改,但 OnLocationChanged 仍然不起作用。 基于 Wifi 的位置变化意味着您的设备看到了一个新的 wifi 网络(谷歌知道这个 wifi 的位置)。 那么,我在谷歌地图上的位置怎么能改变,除了我从不改变我的无线网络?我的假设是,当我在谷歌地图上的位置发生变化时,wifi 网络可以提供我当前的位置,而无需更改为另一个 wifi 网络。我说的对吗?以上是关于onLocationChanged 仅使用网络提供商调用一次的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 GPS 提供程序的 requestLocationUpdates 永远不会调用 onLocationChanged
融合位置提供者:getLastKnowLocation 返回 null 并且 onLocationChange 没有被调用?