Я использую FusedLocationProviderClient для получения местоположения в сервисе.У меня есть кнопка во фрагменте.Когда я открываю фрагмент местоположения, если gps выключен, и когда я включаю gps и нажимаю кнопку запуска, служба запускается, но местоположение не получается.Если я закрываю действие и включаю gps, после этого, если я открываю пункт управления местоположением и нажимаю кнопку «Пуск», я получаю местоположение.
Как получить местоположение, когда я включил gps после создания фрагмента?
Это мой сервис:
@Override
public void onCreate() {
super.onCreate();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
providerClient = LocationServices.getFusedLocationProviderClient(this);
requestlocation();
callbackLocation();
if (Utils.isGpsEnabled(this)) {
providerClient.requestLocationUpdates(locationRequest, locationCallback, Looper.myLooper());
}
else {
stopSelf();
Intent intent_stop = new Intent("stopself_intent");
sendBroadcast(intent_stop);
}
}
void requestlocation() {
locationRequest = LocationRequest.create();
locationRequest.setInterval(5000);
locationRequest.setFastestInterval(5000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setSmallestDisplacement(10);
}
void callbackLocation() {
locationCallback=new LocationCallback(){
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
Intent intent;
Location location=locationResult.getLastLocation();
if(location!=null){
intent=new Intent("StopServiceBroadcast");
intent.putExtra("location",location);
sendBroadcast(intent);
}
}
};
}
и событие кнопки запуска для запуска сервиса:
getLocation_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)==PackageManager.PERMISSION_GRANTED&&
checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)==PackageManager.PERMISSION_GRANTED){
if(Utils.isGpsEnabled(getActivity())) {
Intent intent = new Intent(getActivity(), LocService.class);
getActivity().startService(intent);
setButtonsState(true);
}else {
Snackbar.make(relativeLayout,"Gps is off. Please open Gps and try again",Snackbar.LENGTH_LONG).show();
}
}
}
});