位置监听器不会调用位置更改

时间:2011-03-16 08:57:46

标签: android location listener

我在我的应用中使用位置监听器。 我的代码如下:

    public void startlistning()
    {   
            locationListener = new LocationListener() {
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                // TODO Auto-generated method stub
            }
            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub
                Toast.makeText( getApplicationContext(),"Gps Enabled", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub
                Toast.makeText( getApplicationContext(),"Gps Disabled", Toast.LENGTH_SHORT ).show();
            }
            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                location.getLatitude(); 
                location.getLongitude();
            }
        };
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

但是不知道为什么第一次重启设备时没有调用onLocationChanged方法(没有可用的蜂窝数据(没有simcard))。但是,我在我的应用程序中使用最佳提供程序。 请调查一下。感谢

1 个答案:

答案 0 :(得分:2)

更改设备位置时的位置侦听器方法调用。重启设备时无法启动。如果要调用onLocationChanged方法,则必须更改设备的位置。


请尝试此操作以获取最后的已知位置。

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    Criteria locationCritera = new Criteria();
    locationCritera.setAccuracy(Criteria.ACCURACY_FINE);
    locationCritera.setAltitudeRequired(false);
    locationCritera.setBearingRequired(false);
    locationCritera.setCostAllowed(true);
    locationCritera.setPowerRequirement(Criteria.NO_REQUIREMENT);

    String providerName = locationManager.getBestProvider(locationCritera, true);
    Location location  = locationManager.getLastKnownLocation(providerName);

    Log.i("--- Latitude",""+location.getLatitude());
    Log.i("--- Latitude",""+location.getLongitude());