2012-01-31 7 views
1

je dois surveiller les emplacements de l'utilisateur pour obtenir la latitude et la longtitude, quand j'utilise le fournisseur de réseau ou le fournisseur gps, son fonctionnement bien.Mais quand j'utilise les deux fournisseurs je n'ai pas valeur.Toute personne Solution. cherche et essayer beaucoup d'exemplesmoyen le plus simple utilisant réseau et gps Satellite Android

// Get the location manager 
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
// Define the criteria how to select the locatioin provider -> use 
// default 
Criteria criteria = new Criteria(); 
provider = locationManager.getBestProvider(criteria, true); 
networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
gpsLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

    if (networkLoc != null) { 
    System.out.println("Provider " + provider + " has been selected."); 
    double l = (double) (networkLoc.getLatitude()); 
    double lng11 = (double) (networkLoc.getLongitude()); 
    latituteField1.setText(Double.toString(l)); 
    longitudeField1.setText(Double.toString(lng11)); 
    } 
    if (gpsLoc != null) { 
    System.out.println("Provider " + provider + " has been selected."); 
    double l0t = (double) (gpsLoc.getLatitude()); 
double l0g = (double) (gpsLoc.getLongitude()); 
    latituteField.setText(Double.toString(l0t)); 
longitudeField.setText(Double.toString(l0g)); 

} 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

    } 
@Override 
protected void onResume() { 
super.onResume(); 

locationManager.requestLocationUpdates(
     LocationManager.NETWORK_PROVIDER, 
     MINIMUM_TIME_BETWEEN_UPDATES, 
     MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
     this 
); } 
    /* Remove the locationlistener updates when Activity is paused */ 
    @Override 
protected void onPause() { 
super.onPause(); 
locationManager.requestLocationUpdates(
     LocationManager.NETWORK_PROVIDER, 
     MINIMUM_TIME_BETWEEN_UPDATES, 
     MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
     this 
); 
} 

     @Override 
    public void onLocationChanged(Location location) { 
lat1 = (double) (networkLoc.getLatitude()); 
lng1 = (double) (networkLoc.getLongitude()); 
latituteField1.setText(Double.toString(lat1)); 
longitudeField1.setText(Double.toString(lng1));  
lat = (double) (gpsLoc.getLatitude()); 
lng = (double) (gpsLoc.getLongitude()); 
latituteField.setText(Double.toString(lat)); 
longitudeField.setText(Double.toString(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(); 
} 

    protected void Display(Cursor c) { 
Toast.makeText(this, "rowid: " + c.getString(0) + "\n" + 
"Latitude: " + c.getString(1) + "\n" + "Longitude: " + c.getString(2) + "\n" + 
Toast.LENGTH_LONG, 0).show(); 
    } 
+0

Pouvez-vous poster le code que vous utilisez et ne fonctionne pas? – SERPRO

+0

pouvez-vous me guider quel est le problème dans mon code – Mercy

Répondre

1

ne demande pas les mises à jour de l'emplacement de plus d'un fournisseur .. au lieu, choisir un Criteria un Android choisira le meilleur pour vous.

Par exemple au lieu de:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

Utilisation:

Criteria c = new Criteria(); 
    c.setAccuracy(Criteria.ACCURACY_COARSE); //Or whatever criteria you want 
    final String PROVIDER = locationManager.getBestProvider(c, true); 
    locationManager.requestLocationUpdates(PROVIDER, minTime, minDistance, this); 
+0

Merci, je veux obtenir la valeur de la latitude du fournisseur de réseau et fournisseur de GPS. – Mercy

+0

est-il possible de trouver quel fournisseur? – Mercy

+0

Eh bien, vous pouvez obtenir le dernier emplacement connu pour chaque fournisseur .. mais il pourrait être et ancien emplacement .. http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String – SERPRO

Questions connexes