Итак, я пытаюсь создать приложение погоды для практики, и я столкнулся с проблемой попытки найти место. Я читал, что люди предлагают использовать getLastLocation через API с плавким расположением, проблема с этим заключается в том, что у них еще нет местоположения, зарегистрированного на устройстве, и оно имеет значение null. Я заметил использование времени эмулятора, что это происходит редко, но мне все равно нравится, когда мое приложение обрабатывает его должным образом. Один случай, когда вы можете столкнуться с этим, заключается в том, что они просто отключили GPS и обратно, или если телефон был включен. Одна вещь, которую я сделал, это то, что если getLastLocation вернется в нуль, нужно запросить обновление, но вам все равно придется ждать, пока устройство зарегистрирует обновленное местоположение, которое с помощью приложения погоды все данные основаны на вас, я все еще сталкиваюсь с той же проблемой. Я заметил, что с другими приложениями это не проблема, например, иногда мне приходится загружать Карты Google, чтобы заставить его зарегистрировать местоположение. Как Google Maps вынуждает его обновлять местоположение? Вот пример из моего метода getLocation:Как получить местоположение устройства
public void getLocation() throws SecurityException {
boolean gps_enabled;
LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (gps_enabled) {
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (location != null) {
startGetForecast(location);
} else {
LocationRequest request = LocationRequest.create();
request.setNumUpdates(1);
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, request, this);
}
}
else {
AlertDialogFragment alertDialogFragment = new AlertDialogFragment();
alertDialogFragment.setErrorTexts("Location Unavailable", "Could not retrieve location information.", "Exit");
alertDialogFragment.show(getSupportFragmentManager(), "Location Unavailable");
}
}
Просто обратите внимание, почему вы не используете Fuse Location Provider Api, который будет защищать вас от головных болей. –
Я использую плавленое местоположение api? Моя проблема заключается в том, что нет последнего местоположения с использованием плавного расположения api. – jBob
Если я не ошибаюсь, последнее местоположение может быть выбрано из любого провайдера местоположения, например, gps, wifi или вашей телефонной сети, в вашем коде, если вы заявите, спрашиваете, включен ли gps или нет, но если вы находитесь внутри сборки и включаете gps то нет места? попробуйте отключить ваш запрос if temproray и посмотреть, есть ли у вас что-то. и убедитесь, что у вас есть покрытие сигнала телефонной сети и/или Wi-Fi. –