В моей программе Android неточные координаты GPS - PullRequest
3 голосов
/ 04 декабря 2011

Я пытаюсь получить текущую позицию моего телефона через GPS в моей программе.

Проблема в том, что либо координаты неточные (только градусы), либо местоположение не указано.Я запрограммировал свою третью программу сейчас, и у каждой из них был свой учебник, но он не работал так, как должен там работать.

Установлено разрешение на использование, так что это не ответ;)

Вот мой код:

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 
    } 
}
}

Спасибо, что ответили!

Рене

1 Ответ

0 голосов
/ 04 декабря 2011

Вы, вероятно, получаете только слабый сигнал. Вы можете использовать API определения местоположения Android, чтобы получить приблизительное местоположение.

Убедитесь, что вы стоите снаружи и имеете свободный обзор неба для получения "хорошего" сигнала. Не стойте рядом со зданиями и т. Д. Однако, даже если вы сделаете это, вы не получите точный сигнал. Телефонные GPS-приемники оптимизированы для экономии энергии, а не для точности. Они не будут ставить слишком дорогой чип на ваш телефон ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...