Я пытаюсь получить текущее местоположение пользователя, используя LocationManager и LocationListener. Но не получая никакого значения.
Ниже приведен код, который я использую в Java:
// activity is implementing LocationListener
private LocationManager locationManager;
// in onCreate() method.
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestLocationPermission();
return;
}
else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
//outside onCreate()
@Override
public void onLocationChanged(Location location) {
double longitude = location.getLongitude();
double latitude = location.getLatitude();
NavProfileLocation.setText(String.valueOf(longitude)+" AND "+String.valueOf(latitude));
Toast.makeText(MainActivity.this,String.valueOf(longitude)+" AND "+String.valueOf(latitude),Toast.LENGTH_LONG).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
Я хочу получить широту и долготу, используя GPS текущего пользователя.
да, это я проверяю. все разрешения уже предоставлены пользователем.
Какова ваша точная проблема? вызывается onLocationChanged?
Возможный дубликат Прослушиватель местоположения Android не работает
@RajatMehra нет. не звонил. это главная проблема
@GulshanYadav и в журналах нет ошибок?
@RajatMehra нет, ничего не получаю
@GulshanYadav Ты внутри здания? GPS не будет работать в помещении. Вы можете использовать Сетевой провайдер для помещений.
пробовал и это. но я использую планшет для тестирования приложения. не работаю в этом




Добавьте еще одно разрешение:
<uses-permission android:name = "android.permission.ACCESS_COARSE_LOCATION" />
Последнее обновление от android doc api: Проверьте провайдеров сети и местоположения.
private FusedLocationProviderClient fusedLocationClient;
// ..
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}
fusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
// Got last known location. In some rare situations this can be null.
if (location != null) {
// Logic to handle location object
}
}
});
я использую minSDK 16 и targetSDK 28
Хорошо, а пока попробуйте скомбинировать какой-нибудь вариант с версией: скомпилируйте "com.google.android.gms:play-services-location:11.0.1". Попробуйте другую версию в этой строке... Также укажите в манифесте <uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE"/>
Хорошо, target28 всегда хорош, если это возможно, до более высокого номера версии.
в логах есть ошибки? вы проверяли разрешения?