Skip to content
This repository was archived by the owner on Aug 8, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.UiThread;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;

import com.mapbox.services.android.telemetry.permissions.PermissionsManager;

public abstract class BaseLocationActivity extends AppCompatActivity {

private static final int PERMISSIONS_LOCATION = 0;

@UiThread
protected final void toggleGps(boolean enableGps) {
if (enableGps) {
if (!PermissionsManager.areLocationPermissionsGranted(this)) {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
} else {
enableLocation(true);
}
} else {
enableLocation(false);
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_LOCATION) {
if (!isRuntimePermissionsRequired() || isPermissionAccepted(grantResults)) {
enableLocation(true);
}
}
}

private boolean isPermissionAccepted(int[] grantResults) {
return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
}

private boolean isRuntimePermissionsRequired() {
return android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
}

protected abstract void enableLocation(boolean enabled);
}
Original file line number Diff line number Diff line change
@@ -1,32 +1,23 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.UiThread;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.permissions.PermissionsManager;

public class CustomLocationEngineActivity extends AppCompatActivity {
public class CustomLocationEngineActivity extends BaseLocationActivity {

private MapView mapView;
private MapboxMap mapboxMap;
private FloatingActionButton locationToggleFab;

private LocationEngine locationServices;

private static final int PERMISSIONS_LOCATION = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -55,6 +46,16 @@ public void onClick(View view) {
});
}

@Override
protected void enableLocation(boolean enabled) {
mapboxMap.setMyLocationEnabled(enabled);
if (enabled) {
locationToggleFab.setImageResource(R.drawable.ic_location_disabled);
} else {
locationToggleFab.setImageResource(R.drawable.ic_my_location);
}
}

@Override
protected void onStart() {
super.onStart();
Expand Down Expand Up @@ -96,36 +97,4 @@ public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}

@UiThread
public void toggleGps(boolean enableGps) {
if (enableGps) {
if (!PermissionsManager.areLocationPermissionsGranted(this)) {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
} else {
enableLocation(true);
}
} else {
enableLocation(false);
}
}

private void enableLocation(boolean enabled) {
mapboxMap.setMyLocationEnabled(enabled);
if (enabled) {
locationToggleFab.setImageResource(R.drawable.ic_location_disabled);
} else {
locationToggleFab.setImageResource(R.drawable.ic_my_location);
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_LOCATION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
enableLocation(true);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;

import android.Manifest;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Location;
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.view.View;
import android.view.ViewGroup;

Expand All @@ -27,9 +22,7 @@
/**
* Test activity showcasing how to change the MyLocationView drawable.
*/
public class MyLocationDrawableActivity extends AppCompatActivity implements LocationEngineListener {

private static final int PERMISSIONS_LOCATION = 0;
public class MyLocationDrawableActivity extends BaseLocationActivity implements LocationEngineListener {

private MapView mapView;
private MapboxMap mapboxMap;
Expand Down Expand Up @@ -71,24 +64,8 @@ public void onMapReady(MapboxMap map) {
});
}

public void toggleGps(boolean enableGps) {
if (enableGps) {
if ((ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
|| (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(this, new String[] {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
} else {
enableLocation(true);
}
} else {
enableLocation(false);
}
}

private void enableLocation(boolean enabled) {
@Override
protected void enableLocation(boolean enabled) {
if (enabled) {
mapboxMap.setMyLocationEnabled(true);
Location location = mapboxMap.getMyLocation();
Expand All @@ -102,15 +79,6 @@ private void enableLocation(boolean enabled) {
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_LOCATION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
enableLocation(true);
}
}
}

@Override
public void onConnected() {
// Nothing
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
Expand All @@ -30,14 +25,12 @@
/**
* Test activity showcasing how to tint the MyLocationView.
*/
public class MyLocationTintActivity extends AppCompatActivity implements LocationEngineListener {
public class MyLocationTintActivity extends BaseLocationActivity implements LocationEngineListener {

private MapView mapView;
private MapboxMap mapboxMap;
private boolean firstRun;

private static final int PERMISSIONS_LOCATION = 0;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -180,25 +173,8 @@ protected void onSaveInstanceState(Bundle outState) {
mapView.onSaveInstanceState(outState);
}

@UiThread
public void toggleGps(boolean enableGps) {
if (enableGps) {
if ((ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
|| (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(this, new String[] {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
} else {
enableLocation(true);
}
} else {
enableLocation(false);
}
}

private void enableLocation(boolean enabled) {
@Override
protected void enableLocation(boolean enabled) {
if (enabled) {
mapboxMap.setMyLocationEnabled(true);
if (mapboxMap.getMyLocation() != null) {
Expand All @@ -211,15 +187,6 @@ private void enableLocation(boolean enabled) {
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_LOCATION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
enableLocation(true);
}
}
}

private static class ViewUtils {

public static void attachClickListener(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.UiThread;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
Expand All @@ -20,9 +14,8 @@
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEngineListener;
import com.mapbox.services.android.telemetry.permissions.PermissionsManager;

public class MyLocationToggleActivity extends AppCompatActivity {
public class MyLocationToggleActivity extends BaseLocationActivity {

private MapView mapView;
private MapboxMap mapboxMap;
Expand All @@ -31,8 +24,6 @@ public class MyLocationToggleActivity extends AppCompatActivity {
private LocationEngine locationServices;
private LocationEngineListener locationListener;

private static final int PERMISSIONS_LOCATION = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -107,21 +98,8 @@ public void onLowMemory() {
mapView.onLowMemory();
}

@UiThread
public void toggleGps(boolean enableGps) {
if (enableGps) {
if (!PermissionsManager.areLocationPermissionsGranted(this)) {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
} else {
enableLocation(true);
}
} else {
enableLocation(false);
}
}

private void enableLocation(boolean enabled) {
@Override
protected void enableLocation(boolean enabled) {
if (enabled) {
// To move the camera instantly, we attempt to get the last known location and either
// ease or animate the camera to that position depending on the zoom level.
Expand Down Expand Up @@ -156,14 +134,4 @@ public void onLocationChanged(Location location) {
}
mapboxMap.setMyLocationEnabled(enabled);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_LOCATION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
enableLocation(true);
}
}
}

}