summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java b/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java
new file mode 100644
index 0000000000..49a509432a
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java
@@ -0,0 +1,94 @@
+package com.mapbox.mapboxsdk.downstream;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import com.google.gson.JsonObject;
+import com.mapbox.mapboxsdk.Mapbox;
+import com.mapbox.mapboxsdk.geometry.LatLng;
+import com.mapbox.mapboxsdk.geometry.LatLngBounds;
+import com.mapbox.mapboxsdk.log.Logger;
+import com.mapbox.mapboxsdk.maps.Style;
+import com.mapbox.mapboxsdk.offline.OfflineManager;
+import com.mapbox.mapboxsdk.offline.OfflineRegion;
+import com.mapbox.mapboxsdk.offline.OfflineRegionError;
+import com.mapbox.mapboxsdk.offline.OfflineRegionStatus;
+import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition;
+import timber.log.Timber;
+
+public class MainActivity extends AppCompatActivity {
+
+ private final static String TAG = "Main";
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_donwload);
+
+ Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+
+ OfflineManager offlineManager = OfflineManager.getInstance(this);
+
+ LatLngBounds latLngBounds = new LatLngBounds.Builder()
+ .include(new LatLng(50.849772, 5.688173))
+ .include(new LatLng(50.843630, 5.710903))
+ .build();
+
+ float pixelRatio = getResources().getDisplayMetrics().density;
+
+ OfflineTilePyramidRegionDefinition definition = new OfflineTilePyramidRegionDefinition(
+ Style.MAPBOX_STREETS, latLngBounds, 16, 20, pixelRatio
+ );
+
+ offlineManager.createOfflineRegion(definition, convertRegionName("test"), new OfflineManager.CreateOfflineRegionCallback() {
+ @Override
+ public void onCreate(OfflineRegion offlineRegion) {
+ offlineRegion.setDownloadState(OfflineRegion.STATE_ACTIVE);
+ offlineRegion.setObserver(new OfflineRegion.OfflineRegionObserver() {
+ @Override
+ public void onStatusChanged(OfflineRegionStatus status) {
+ if (status.isComplete()) {
+ View button = findViewById(R.id.button);
+ button.setVisibility(View.VISIBLE);
+ button.setOnClickListener(v -> {
+ Intent intent = new Intent(v.getContext(), MapActivity.class);
+ startActivity(intent);
+ });
+ }
+ }
+
+ @Override
+ public void onError(OfflineRegionError error) {
+ Logger.e(TAG, error.getMessage());
+ }
+
+ @Override
+ public void mapboxTileCountLimitExceeded(long limit) {
+
+ }
+ });
+ }
+
+ @Override
+ public void onError(String error) {
+ Logger.e(TAG, error);
+ }
+ });
+ }
+
+ public static final String JSON_CHARSET = "UTF-8";
+ public static final String JSON_FIELD_REGION_NAME = "FIELD_REGION_NAME";
+
+ public static byte[] convertRegionName(String regionName) {
+ try {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty(JSON_FIELD_REGION_NAME, regionName);
+ return jsonObject.toString().getBytes(JSON_CHARSET);
+ } catch (Exception exception) {
+ Timber.e(exception, "Failed to encode metadata: ");
+ }
+ return null;
+ }
+} \ No newline at end of file