2011-09-07 97 views
0

我不久前發佈了一個問題。基本上我想要做的是讓我的位置經理返回我的經度和緯度。我的getBestProvider()方法返回網絡,但是我的locationManager.getLastKnownLocation(provider)返回null。正如你可以看到我已經實現了監聽器。我一定做錯了什麼。找不到用戶位置

這是代碼。

public class Activity1 extends Activity implements LocationListener { 
     private LocationManager locationManager; 
     private String provider; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    readFile(); 




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

      Criteria criteria = new Criteria(); 
      provider = locationManager.getBestProvider(criteria, false); 
      System.out.println(provider); 
      System.out.println(locationManager.getProviders(criteria, false)); 
      System.out.println(locationManager.getProvider("network")); 
      System.out.println(locationManager.getAllProviders()); 


      Location location = locationManager.getLastKnownLocation(provider); 

      // Initialize the location fields 
      if (location != null) { 
       System.out.println("Provider " + provider + " has been selected."); 
       int lat = (int) (location.getLatitude()); 
       int lng = (int) (location.getLongitude()); 
       System.out.println(String.valueOf(lat)); 
       System.out.println(String.valueOf(lng)); 

      } else { 
       System.out.println("Provider not available"); 
       System.out.println("Provider not available"); 
      } 


}@Override 
protected void onResume() { 
    super.onResume(); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
} 

/* Remove the locationlistener updates when Activity is paused */ 
@Override 
protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
} 

@Override 
public void onLocationChanged(Location location) { 
    int lat = (int) (location.getLatitude()); 
    int lng = (int) (location.getLongitude()); 
    System.out.println(String.valueOf(lat)); 
    System.out.println(String.valueOf(lng)); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
    Toast.makeText(this, "Enabled new provider " + provider, 
      Toast.LENGTH_SHORT).show(); 

} 

@Override 
public void onProviderDisabled(String provider) { 
    Toast.makeText(this, "Disenabled provider " + provider, 
      Toast.LENGTH_SHORT).show(); 
} 

}

+0

有人有同樣的問題,你不久前,檢查此THEAD:用戶未找到位置 - 經度和緯度的Android(http://stackoverflow.com/questions/7308313/user-location-not-found-latitude-and-longitude-in-android/7308484#7308484) – Tiago

+0

我讀過它,但它沒有解決我的問題。我已經完成了他所做的工作,但仍然無效。 –

回答

0
LocationManager locationManager; 
    String context = Context.LOCATION_SERVICE; 
    locationManager = (LocationManager)getSystemService(context); 
    String provider = LocationManager.NETWORK_PROVIDER; 
    Location location = locationManager.getLastKnownLocation(provider); 
    updateWithNewLocation(location); 
} 

private void updateWithNewLocation(Location location){ 
    String latLongString;TextView myLocationText; 
    myLocationText = (TextView)findViewById(R.id.myLocationText); 
    if (location != null) { 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     latLongString = "Lat:" + lat + "\nLong:" + lng; 
    } else { latLongString = "No location found"; } 
} 
+0

我加了這段代碼,它仍然返回null。 –