Привет, новый для разработки Android. Мне нужно получить локальное местоположение пользователя каждые 15 минут в фоновом задании, для чего у меня есть googleapiclient для получения обновлений местоположения при отключении gps, как получить обновления местоположения с использованием плавного клиента api, есть ли способ, каким образом приложение как ол использование кабин может кто-нибудь HelpMe из позвольте мне опубликовать мой код, что я пытался до сих пор:Как получить информацию о местоположении в фоновом режиме, используя fusedloaction api, даже когда gps отключен пользователем?
public class Locationlistener implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,LocationListener {
private Location mlocation; // location
private double latitude; // latitude
private double longitude; // longitude
private GoogleApiClient mGAC;
private Context mContext;
public static final String TAG = "GPSresource";
private FusedLocationProviderApi fusedLocationProviderApi;
private LocationRequest locationRequest;
public Locationlistener(Context c)
{
mContext = c;
try {
buildGoogleApiClient();
mGAC.connect();
}
catch(Exception e)
{
Log.d(TAG,e.toString());
}
}
protected synchronized void buildGoogleApiClient() {
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(1);
locationRequest.setFastestInterval(1);
fusedLocationProviderApi = LocationServices.FusedLocationApi;
mGAC = new GoogleApiClient.Builder(mContext)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
public double getLatitude(){
if(mlocation != null){
latitude = mlocation.getLatitude();
}
// return latitude
return latitude;
}
/**
* Function to get longitude
* */
public double getLongitude() {
if (mlocation != null) {
longitude = mlocation.getLongitude();
}
// return longitude
return longitude;
}
public Location GetLocationBlocking() throws InterruptedException {
// String lat=String.valueOf(moCurrentLocation.getLatitude());
// String longt=String.valueOf(moCurrentLocation.getLongitude());
// Toast.makeText(oContext,"Lat"+lat+"long"+longt,Toast.LENGTH_SHORT).show();
return mlocation;
}
@Override
public void onConnected(Bundle bundle) {
if (mGAC != null) {
Location oLocation = LocationServices.FusedLocationApi.getLastLocation(mGAC);
mlocation = oLocation;
getLatitude();
getLongitude();
if (oLocation != null){
Log.d("lat",String.valueOf(mlocation.getLatitude()));
Log.d("long",String.valueOf(mlocation.getLongitude()));
}
else{
LocationServices.FusedLocationApi.requestLocationUpdates(mGAC, locationRequest, this);
} }}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
public void onLocationChanged(Location location) {
mlocation=location;
}
}
, как заставить его работать, даже если GPS выключен заранее спасибо !!
я определил мне как хотелось бы, если gps-доступный получить местоположение gps или местоположение на основе сети, как это сделать –