package com.example.lost;
import com.mapzen.android.lost.api.LostApiClient;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.widget.Toast.LENGTH_SHORT;
/**
* Creates a {@link LostApiClient} and handles requesting permissions
*/
public class LostApiClientActivity extends AppCompatActivity implements
LostApiClient.ConnectionCallbacks {
private static final String TAG = LostApiClientActivity.class.getSimpleName();
protected LostApiClient client;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
client = new LostApiClient.Builder(this).addConnectionCallbacks(this).build();
}
@Override public void onConnected() {
Toast.makeText(this, "LOST client connected", LENGTH_SHORT).show();
}
@Override public void onConnectionSuspended() {
Toast.makeText(this, "LOST client suspended", LENGTH_SHORT).show();
}
private boolean isFineLocationPermissionGranted() {
return ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PERMISSION_GRANTED;
}
private void requestFineLocationPermission() {
ActivityCompat.requestPermissions(this, new String[] { ACCESS_FINE_LOCATION }, 101);
}
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (grantResults[0] == PERMISSION_GRANTED) {
client.connect();
} else {
finish();
}
}
protected void connect() {
Log.d(TAG, "Connecting...");
if (!isFineLocationPermissionGranted()) {
requestFineLocationPermission();
} else {
client.connect();
}
}
protected void disconnect() {
Log.d(TAG, "Disconnecting...");
client.disconnect();
Toast.makeText(this, "LOST client disconnected", LENGTH_SHORT).show();
}
}