diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2017-01-05 00:14:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-05 00:14:35 +0100 |
commit | cf859d6d0b782b03f7cda175757daed08731b440 (patch) | |
tree | da99364b253f4d4c9c84345e4cd014e3eb5440ad /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java | |
parent | b515762528ce1b14b23fc7c445dc9c8702ac6600 (diff) | |
download | qtlocation-mapboxgl-cf859d6d0b782b03f7cda175757daed08731b440.tar.gz |
[android] - move snapshot t NativeMapView (#7463)
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java')
-rwxr-xr-x | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java | 53 |
1 files changed, 46 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 95c0ae5327..8300e8024b 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -3,6 +3,7 @@ package com.mapbox.mapboxsdk.maps; import android.app.ActivityManager; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.PointF; import android.graphics.RectF; import android.os.Build; @@ -50,6 +51,9 @@ final class NativeMapView { // Listeners for Map change events private CopyOnWriteArrayList<MapView.OnMapChangedListener> onMapChangedListeners; + // Listener invoked to return a bitmap of the map + private SnapshotRequest snapshotRequest; + // // Static methods // @@ -603,7 +607,11 @@ final class NativeMapView { } protected void onMapChanged(int rawChange) { - mapView.onMapChanged(rawChange); + if (onMapChangedListeners != null) { + for (MapView.OnMapChangedListener onMapChangedListener : onMapChangedListeners) { + onMapChangedListener.onMapChanged(rawChange); + } + } } protected void onFpsChanged(double fps) { @@ -611,7 +619,18 @@ final class NativeMapView { } protected void onSnapshotReady(byte[] bytes) { - mapView.onSnapshotReady(bytes); + if (snapshotRequest != null && bytes != null) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inBitmap = snapshotRequest.getBitmap(); // the old Bitmap to be reused + options.inMutable = true; + options.inSampleSize = 1; + Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options); + + MapboxMap.SnapshotReadyCallback callback = snapshotRequest.getCallback(); + if (callback != null) { + callback.onSnapshotReady(bitmap); + } + } } // @@ -833,11 +852,31 @@ final class NativeMapView { onMapChangedListeners.remove(listener); } - void onMapChangedEventDispatch(int mapChange) { - if (onMapChangedListeners != null) { - for (MapView.OnMapChangedListener onMapChangedListener : onMapChangedListeners) { - onMapChangedListener.onMapChanged(mapChange); - } + // + // Snapshot + // + + void addSnapshotCallback(@NonNull MapboxMap.SnapshotReadyCallback callback, @Nullable Bitmap bitmap) { + snapshotRequest = new SnapshotRequest(bitmap, callback); + scheduleTakeSnapshot(); + render(); + } + + private static class SnapshotRequest { + private Bitmap bitmap; + private MapboxMap.SnapshotReadyCallback callback; + + SnapshotRequest(Bitmap bitmap, MapboxMap.SnapshotReadyCallback callback) { + this.bitmap = bitmap; + this.callback = callback; + } + + public Bitmap getBitmap() { + return bitmap; + } + + public MapboxMap.SnapshotReadyCallback getCallback() { + return callback; } } } |