#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