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 仅使用网络提供商调用一次的主要内容,如果未能解决你的问题,请参考以下文章

OnLocationChanged 未在某些设备上触发

使用带有 GPS 提供程序的 requestLocationUpdates 永远不会调用 onLocationChanged

需要同步 onLocationChanged

融合位置提供者:getLastKnowLocation 返回 null 并且 onLocationChange 没有被调用?

Android OnlocationChanged storage

为啥在 API > 23 中不调用 FusedLocationApi (onLocationChanged)?