Módulo responsável pelo monitoramento da localização geográfica do usuário. Este módulo roda em background e fica monitorando os lugares visitados pelos usuários.
Para inicializar a geolocalização, a aplicação precisa obter a permissão do usuário conforme exemplo abaixo (Fique a vontade em implementar a sua maneira).
Sua Activity deve implementar ActivityCompat.OnRequestPermissionsResultCallback.
protected void requestGeoTrackingPermissions() {
// Verifica Google Play Services
final GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
final int result = googleAPI.isGooglePlayServicesAvailable(getApplicationContext());
if (result != ConnectionResult.SUCCESS) {
if (googleAPI.isUserResolvableError(result)) {
googleAPI.getErrorDialog(this, result, 9000).show();
}
// Usuário precisa atualizar o Google Play Services
return;
}
// Verifica permissão de geolocalização
if (ActivityCompat.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Requisitar permissão de geolocalização
ActivityCompat.requestPermissions(this, new String[]{
android.Manifest.permission.ACCESS_COARSE_LOCATION,
android.Manifest.permission.ACCESS_FINE_LOCATION
}, 200);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (200 == requestCode && grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//Permissão concedida, inicializar geolocalização
MDMGeoBehavior.start(getApplicationContext());
ActivityCompat.requestPermissions(this, new String[]{
android.Manifest.permission.ACCESS_BACKGROUND_LOCATION}, 2);
} else {
// Permissão não concedida
}
}
}
Pedir a permissão ao usuário:
MDMCore.askPermissionFullDialog(this, new MDMCore.PermissionListener() {
@Override
public void onPermissionResponse(boolean response) {
requestGeoTrackingPermissions();
}
});
E assim que concedida a permissão do usuário, chamar novamente a inicialização do módulo GeoBehavior:
MDMGeoBehavior.start(getApplicationContext());
Opt-out
Para fazer o opt-out do módulo, basta chamar o seguinte comando:
MDMGeoBehavior.setOptOut(getApplicationContext(), true);
Para desfazer o opt-out do módulo, basta chamar o seguinte comando:
MDMGeoBehavior.setOptOut(getApplicationContext(), false);