From bb76ccaebfd7fdd1eb34c4deca38d292c4dc242d Mon Sep 17 00:00:00 2001 From: tobrun Date: Fri, 29 Mar 2019 11:20:38 +0100 Subject: [android] - add simple map module --- .../MapboxGLAndroidSDKTestActivity/.gitignore | 2 + .../MapboxGLAndroidSDKTestActivity/build.gradle | 22 +++ .../src/main/AndroidManifest.xml | 18 +++ .../mapbox/mapboxsdk/activity/MainActivity.java | 162 +++++++++++++++++++++ .../src/main/res/layout/activity_main.xml | 19 +++ .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1894 bytes .../src/main/res/values/strings.xml | 4 + .../location/ManualLocationUpdatesActivity.java | 94 ++---------- platform/android/settings.gradle | 2 +- 9 files changed, 242 insertions(+), 81 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/.gitignore create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/build.gradle create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/src/main/AndroidManifest.xml create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/src/main/java/com/mapbox/mapboxsdk/activity/MainActivity.java create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/src/main/res/layout/activity_main.xml create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 platform/android/MapboxGLAndroidSDKTestActivity/src/main/res/values/strings.xml diff --git a/platform/android/MapboxGLAndroidSDKTestActivity/.gitignore b/platform/android/MapboxGLAndroidSDKTestActivity/.gitignore new file mode 100644 index 0000000000..51fa55e88b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestActivity/.gitignore @@ -0,0 +1,2 @@ +/build +/src/main/res/values/strings.xml diff --git a/platform/android/MapboxGLAndroidSDKTestActivity/build.gradle b/platform/android/MapboxGLAndroidSDKTestActivity/build.gradle new file mode 100644 index 0000000000..047954f9f4 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestActivity/build.gradle @@ -0,0 +1,22 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 26 + + defaultConfig { + applicationId "com.mapbox.mapboxsdk.activity" + minSdkVersion 14 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + } +} + +dependencies { + implementation (project(':MapboxGLAndroidSDK')) { + exclude group: 'com.android.support', module: 'support-fragment' + } + implementation ('com.android.support:support-compat:26.0.2') { + exclude group: 'android.arch.lifecycle', module: 'runtime' + } +} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestActivity/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestActivity/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..79c65a6925 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestActivity/src/main/AndroidManifest.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestActivity/src/main/java/com/mapbox/mapboxsdk/activity/MainActivity.java b/platform/android/MapboxGLAndroidSDKTestActivity/src/main/java/com/mapbox/mapboxsdk/activity/MainActivity.java new file mode 100644 index 0000000000..480838e886 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestActivity/src/main/java/com/mapbox/mapboxsdk/activity/MainActivity.java @@ -0,0 +1,162 @@ +package com.mapbox.mapboxsdk.activity; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.location.Location; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; +import com.mapbox.android.core.location.LocationEngine; +import com.mapbox.android.core.location.LocationEngineProvider; +import com.mapbox.android.core.location.LocationEngineRequest; +import com.mapbox.android.core.permissions.PermissionsListener; +import com.mapbox.android.core.permissions.PermissionsManager; +import com.mapbox.mapboxsdk.geometry.LatLngBounds; +import com.mapbox.mapboxsdk.location.LocationComponent; +import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions; +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 java.util.List; +import java.util.Random; + +public class MainActivity extends Activity implements OnMapReadyCallback { + + private MapView mapView; + private LocationComponent locationComponent; + private LocationEngine locationEngine; + private PermissionsManager permissionsManager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + locationEngine = LocationEngineProvider.getBestLocationEngine(this, false); + + Button fabManualUpdate = findViewById(R.id.button); + fabManualUpdate.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (locationComponent != null && locationComponent.getLocationEngine() == null) { + locationComponent.forceLocationUpdate( + getRandomLocation(LatLngBounds.from(60, 25, 40, -5))); + } + } + }); + + 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(MainActivity.this.getApplicationContext(), + "You need to accept location permissions.", + Toast.LENGTH_SHORT + ).show(); + } + + @Override + public void onPermissionResult(boolean granted) { + if (granted) { + mapView.getMapAsync(MainActivity.this); + } else { + finish(); + } + } + }); + permissionsManager.requestLocationPermissions(this); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @SuppressLint("MissingPermission") + @Override + public void onMapReady(final MapboxMap mapboxMap) { + mapboxMap.setStyle(new Style.Builder().fromUrl(Style.MAPBOX_STREETS), new Style.OnStyleLoaded() { + @Override + public void onStyleLoaded(Style style) { + locationComponent = mapboxMap.getLocationComponent(); + + locationComponent.activateLocationComponent( + LocationComponentActivationOptions + .builder(MainActivity.this, style) + .locationEngine(locationEngine) + .locationEngineRequest(new LocationEngineRequest.Builder(500) + .setFastestInterval(500) + .setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY).build()) + .build()); + + locationComponent.setLocationComponentEnabled(true); + locationComponent.setRenderMode(RenderMode.COMPASS); + } + }); + } + + @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(); + } + + public static Location getRandomLocation(LatLngBounds bounds) { + Random random = new Random(); + + double randomLat = bounds.getLatSouth() + (bounds.getLatNorth() - bounds.getLatSouth()) * random.nextDouble(); + double randomLon = bounds.getLonWest() + (bounds.getLonEast() - bounds.getLonWest()) * random.nextDouble(); + + Location location = new Location("random-loc"); + location.setLongitude(randomLon); + location.setLatitude(randomLat); + return location; + } +} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestActivity/src/main/res/layout/activity_main.xml b/platform/android/MapboxGLAndroidSDKTestActivity/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000000..c4dce05e4b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestActivity/src/main/res/layout/activity_main.xml @@ -0,0 +1,19 @@ + + + + + +