Найти текущее местоположение

#java #android

#java #Android

Вопрос:

Я не могу найти текущее местоположение, всегда нахожу свое последнее местоположение.

Я должен что-то изменить.

Пожалуйста, помогите.

Моя домашняя работа по проекту для школы

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    gpstxt = (TextView) findViewById(R.id.txtgps);
    buttonGPS = (Button) findViewById(R.id.gpsbtn);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED amp;amp; ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        return;
    }
    final Location location = locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);

    buttonGPS.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onLocationChanged(location);
        }
    });

}

private void onLocationChanged(Location location) {
    double longtitude = location.getLongitude();
    double latitude = location.getLatitude();
    gpstxt.setText("Enlem:"   latitude   "n"   "Boylam:"   longtitude);
}

}
 

Не вывод последнего местоположения.
Я хочу найти текущее местоположение с помощью gps.

Ответ №1:

Вы не должны использовать LocationManager.getLastKnownLocation()

Скорее вам следует подписаться на обновления местоположения.

Вы можете проверить это для получения более подробной информации о реализации.

https://developer.android.com/training/location/receive-location-updates

Ответ №2:

Похоже, вы используете getLastKnownLocation() метод, который предоставляет вам последнее известное местоположение пользователя.

Вместо этого вы должны использовать requestLocationUpdates() метод, присутствующий в пакете LocationManager.

Что-то вроде этого должно работать :

 // Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
 

Ссылка : https://developer.android.com/guide/topics/location/strategies.html