2011-12-04 4 views
3

J'essaie d'obtenir ma position actuelle de mon téléphone via GPS dans mon programme. Le problème est que les coordonnées sont inexactes (seuls les degrés) ou qu'aucun emplacement n'est donné. J'ai programmé mon troisième programme maintenant et chacun d'entre eux avec un tutoriel différent, mais cela n'a pas fonctionné comme il devrait fonctionner là.Les coordonnées GPS sont inexactes sur mon programme Android

utilisations-autorisation sont définies, de sorte que ce n'est pas la réponse;)

Alors, voici mon code:

public class GpsActivity extends Activity{ 

private TextView latituteField; 
private TextView longitudeField; 
private TextView dateField; 
private TextView timeField; 
private LocationManager locationManager; 
private String provider; 
private LocationListener listener; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    latituteField = (TextView) findViewById(R.id.TextView02); 
    longitudeField = (TextView) findViewById(R.id.TextView04); 
    dateField = (TextView) findViewById(R.id.tvdate); 
    timeField = (TextView) findViewById(R.id.tvtime); 
    GregorianCalendar g = new GregorianCalendar(); 
    g.setTimeInMillis(System.currentTimeMillis()); 

    DateFormat df = DateFormat.getInstance(); 
    Date d = df.getCalendar().getTime(); 
    dateField.setText(""+d.getDate()+"."+(d.getMonth()+1)+"."+(1980+d.getYear())); 
    timeField.setText(""+g.getTime().getHours()+"h "+g.getTime().getMinutes()+"m "+g.getTime().getSeconds()+"s"); 


    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    // Define the criteria how to select the locatioin provider -> use 
    // default 
    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 

    provider = locationManager.getBestProvider(criteria, false); 
    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()); 

     latituteField.setText(""+lat+"//"+location.getAccuracy()); 
     longitudeField.setText(""+lng+"//"+location.getProvider()); 
    } else { 
     latituteField.setText("Provider not available"); 
     longitudeField.setText("Provider not available"); 
    } 
    listener = new MyLocationListener(); 
    locationManager.requestLocationUpdates("gps" ,10000L, 10.0f, listener); 

} 

class MyLocationListener implements LocationListener{ 
    public void onLocationChanged(Location location) { 
      // TODO Auto-generated method stub 
      if (location != null){ 
        latituteField.setText(("Lat: " + location.getLatitude())); 
        longitudeField.setText("LLong: " + location.getLongitude()); 
      } 
    } 
    public void onProviderDisabled(String provider) { 

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

Merci d'avoir répondu!

Rene

Répondre

0

Vous obtenez probablement juste un signal faible. Vous pouvez utiliser l'API de localisation android pour obtenir un emplacement approximatif. Assurez-vous de rester à l'extérieur et d'avoir une vue dégagée vers le ciel pour obtenir un «bon» signal. Ne vous tenez pas près des bâtiments, etc. Cependant, même si vous faites cela, vous ne recevrez pas un signal précis. Les GPS des téléphones sont optimisés pour économiser l'énergie et non pour la précision. Ils ne mettront pas une puce trop chère sur votre téléphone aussi bien ...

+0

En plus de la réponse d'Udo, n'oubliez pas que vous pouvez interroger l'exactitude de la correction d'emplacement ... Discussion sur la précision ici: http: // stackoverflow.com/questions/3052517/how-is-location-accuracy-measured-in-android – Basic

Questions connexes