onLocationChanged(位置位置)永远不会被调用

时间:2014-09-18 06:42:43

标签: android location locationmanager

我     locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 返回true但在更改位置时从未调用过。我的无线网络已打开,GPS卫星和wifi和网络位置是打开我不能说为什么它没有被调用。我在下面附上了所需的代码。

try
    {
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        gps_enabled=locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);        
        network_enabled=locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        if(!gps_enabled && !network_enabled)
            Toast.makeText(MainActivity.this, "Error Getting Your Location", Toast.LENGTH_LONG).show();
        else
        {
            if(network_enabled)
            {
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
                Toast.makeText(MainActivity.this, "network_enabled", Toast.LENGTH_LONG).show();
            }
            if(gps_enabled)
            {
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
                Toast.makeText(MainActivity.this, "gps_enabled", Toast.LENGTH_LONG).show();
            }
        }
    }
    catch(Exception ex){}


@Override
public void onLocationChanged(Location location) {  
    Toast.makeText(MainActivity.this, "onLocationChanged", Toast.LENGTH_LONG).show();
    this.lat = location.getLatitude();
    this.lon = location.getLongitude(); 
    (new CityList()).execute();
}

这里的toast gps_enabled但是onLocationChanged永远不会出现。请任何人帮我纠正这些事情。

1 个答案:

答案 0 :(得分:1)

可能问题不在这部分代码中。

首先,您无法在模拟器上模拟位置更改。你必须在真实的​​设备上测试它,最好是在室外。

要使用GPS获得正确位置,通常您需要等待10-60秒(或更长时间)。这意味着如果您使用后台服务(就像我使用AlarmManager一样)来获取GPS位置,您必须等待一段时间才能关闭它。