2011-03-16 53 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