package com.example.lost; import android.os.Bundle; import android.os.Looper; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.mapzen.android.lost.api.LocationAvailability; import com.mapzen.android.lost.api.LocationCallback; import com.mapzen.android.lost.api.LocationRequest; import com.mapzen.android.lost.api.LocationResult; import com.mapzen.android.lost.api.LocationServices; import com.mapzen.android.lost.api.LostApiClient; import static com.mapzen.android.lost.api.LocationRequest.PRIORITY_HIGH_ACCURACY; public class LocationAvailabilityActivity extends AppCompatActivity { LostApiClient client; LocationCallback callback = new LocationCallback() { @Override public void onLocationAvailability(LocationAvailability locationAvailability) { boolean isAvailable = locationAvailability.isLocationAvailable(); Toast.makeText(LocationAvailabilityActivity.this, isAvailable ? R.string.location_available : R.string.location_unavailable, Toast.LENGTH_SHORT).show(); } @Override public void onLocationResult(LocationResult result) { } }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location_availability); setupLocationAvailabilityBtn(); } private void setupLocationAvailabilityBtn() { Button connect = (Button) findViewById(R.id.check_availability); connect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (client == null || !client.isConnected()) { connect(); } else { checkLocationAvailability(); } } }); } private void connect() { client = new LostApiClient.Builder(this).addConnectionCallbacks( new LostApiClient.ConnectionCallbacks() { @Override public void onConnected() { checkLocationAvailability(); } @Override public void onConnectionSuspended() { } }).build(); client.connect(); } private void checkLocationAvailability() { LocationAvailability availability = LocationServices.FusedLocationApi.getLocationAvailability(client); boolean isAvailable = availability.isLocationAvailable(); Toast.makeText(LocationAvailabilityActivity.this, isAvailable ? R.string.location_available : R.string.location_unavailable, Toast.LENGTH_SHORT).show(); final LocationRequest locationRequest = LocationRequest.create() .setPriority(PRIORITY_HIGH_ACCURACY); LocationServices.FusedLocationApi.requestLocationUpdates(client, locationRequest, callback, Looper.myLooper()); } }