package com.mapbox.mapboxsdk.testapp.activity.location; import android.annotation.SuppressLint; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.mapbox.android.core.permissions.PermissionsListener; import com.mapbox.android.core.permissions.PermissionsManager; import com.mapbox.mapboxsdk.location.LocationComponent; import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions; import com.mapbox.mapboxsdk.location.LocationComponentOptions; import com.mapbox.mapboxsdk.location.modes.CameraMode; import com.mapbox.mapboxsdk.location.modes.RenderMode; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.maps.Style; import com.mapbox.mapboxsdk.testapp.R; import java.util.List; public class LocationComponentActivationActivity extends AppCompatActivity implements OnMapReadyCallback { private MapView mapView; private MapboxMap mapboxMap; private PermissionsManager permissionsManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location_layer_activation_builder); mapView = findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); if (PermissionsManager.areLocationPermissionsGranted(this)) { mapView.getMapAsync(this); } else { permissionsManager = new PermissionsManager(new PermissionsListener() { @Override public void onExplanationNeeded(List permissionsToExplain) { Toast.makeText(LocationComponentActivationActivity.this, "You need to accept location permissions.", Toast.LENGTH_SHORT).show(); } @Override public void onPermissionResult(boolean granted) { if (granted) { mapView.getMapAsync(LocationComponentActivationActivity.this); } else { finish(); } } }); permissionsManager.requestLocationPermissions(this); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override public void onMapReady(@NonNull MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; mapboxMap.setStyle(Style.DARK, style -> activateLocationComponent(style)); } @SuppressLint("MissingPermission") private void activateLocationComponent(@NonNull Style style) { LocationComponent locationComponent = mapboxMap.getLocationComponent(); LocationComponentOptions locationComponentOptions = LocationComponentOptions.builder(this) .elevation(5) .accuracyAlpha(.6f) .accuracyColor(Color.GREEN) .foregroundDrawable(R.drawable.mapbox_logo_helmet) .build(); LocationComponentActivationOptions locationComponentActivationOptions = LocationComponentActivationOptions .builder(this, style) .locationComponentOptions(locationComponentOptions) .useDefaultLocationEngine(true) .build(); locationComponent.activateLocationComponent(locationComponentActivationOptions); locationComponent.setLocationComponentEnabled(true); locationComponent.setRenderMode(RenderMode.NORMAL); locationComponent.setCameraMode(CameraMode.TRACKING); } @Override protected void onStart() { super.onStart(); mapView.onStart(); } @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onStop() { super.onStop(); mapView.onStop(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override public void onLowMemory() { super.onLowMemory(); mapView.onLowMemory(); } }