2011-03-16 37 views
0

我在我的应用程序中使用位置监听器。 我有这样的代码:位置列表不要调用位置更改

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); 

但是不知道为什么,当我重新启动设备第1次(不包括蜂窝数据(无卡贴)有售)onLocationChanged没有调用该方法。不过,我在我的应用程序中使用了最佳提供商。 请看事情。谢谢

+0

您可能希望提供一些有关如何调用此方法的详细信息。 – 2011-03-16 09:05:30

+0

我只是在活动开始时调用方法startlistning()。为了调用getLastKnownLocation(),我创建了一个单独的类MyLocationListner,然后在注释中调用getLastKnownLocation(),如下所示。请帮忙。谢谢 – Pankaj 2011-03-16 11:15:51

回答

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()); 
+0

嗨,有没有办法打开获取最后一个已知的位置,而无需启动谷歌地图?由于我无法在重新启动设备时在应用程序中获取位置信息。 – Pankaj 2011-03-16 10:27:04

+0

嗨,我添加代码获取上次已知的位置,然后存储到共享首选项,每当位置更改时,所以当您重新启动设备时,您可以从共享首选项中获取它。 – 2011-03-16 10:43:02

+0

其实我在我的应用程序中做了同样的事情,但是,我无法从Wi-Fi网络获取数据。它对蜂窝数据工作非常好。我提供的相同代码供您参考。请看看是否需要更改或添加。我的最后一个已知位置的代码如下: – Pankaj 2011-03-16 10:51:41