diff --git a/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java b/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java index 9105a8878..fd59b5707 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java +++ b/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java @@ -66,8 +66,6 @@ public class ShareContentProvider extends CustomContentProvider { uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA.getName() + "/*/*", URI_KMZ_WITH_TRACKDETAIL_AND_SENSORDATA); uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES.getName() + "/*/*", URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES); - - uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.SHARE_PICTURE_PNG.getName() + "/*/*", URI_SHARE_PICTURE); } /** @@ -148,9 +146,6 @@ public class ShareContentProvider extends CustomContentProvider { case URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES: return TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES; - case URI_SHARE_PICTURE: - return TrackFileFormat.SHARE_PICTURE_PNG; - default: throw new RuntimeException("Could not derive TrackFileFormat from Uri " + uri); } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java b/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java index 96a0f15f3..8a52cae79 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java @@ -1,7 +1,6 @@ package de.dennisguse.opentracks.io.file; import android.content.Context; -import android.graphics.Bitmap; import java.util.Locale; @@ -10,7 +9,6 @@ import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.io.file.exporter.GPXTrackExporter; import de.dennisguse.opentracks.io.file.exporter.KMLTrackExporter; import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter; -import de.dennisguse.opentracks.io.file.exporter.SharePictureTrackExporter; import de.dennisguse.opentracks.io.file.exporter.TrackExporter; /** @@ -102,22 +100,6 @@ public enum TrackFileFormat { public String getExtension() { return "gpx"; } - }, - - SHARE_PICTURE_PNG { - @Override - public TrackExporter createTrackExporter(Context context) { - return new SharePictureTrackExporter(context, Bitmap.CompressFormat.PNG); - } - - @Override - public String getMimeType() { - return "image/png"; - } - - public String getExtension() { - return "png"; - } }; private static final String MIME_KMZ = "application/vnd.google-earth.kmz"; diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/SharePictureTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/SharePictureTrackExporter.java deleted file mode 100644 index 292c76859..000000000 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/SharePictureTrackExporter.java +++ /dev/null @@ -1,88 +0,0 @@ -package de.dennisguse.opentracks.io.file.exporter; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; - -import androidx.annotation.NonNull; - -import java.io.OutputStream; - -import de.dennisguse.opentracks.data.models.Track; -import de.dennisguse.opentracks.databinding.TrackSharePictureBinding; -import de.dennisguse.opentracks.settings.PreferencesUtils; -import de.dennisguse.opentracks.stats.TrackStatistics; -import de.dennisguse.opentracks.util.StringUtils; - -/** - * Create a share picture for a track. - * Here a layout is inflated and converted to PNG. - *
- * TODO - * If this classes is used with non-visual context (e.g., ApplicationContext), it may not work in the future. - * API31 introduces `ncorrectContextUseViolation`, which may thrown during runtime. - * This code was tested on API30. - * Some more information: https://stackoverflow.com/questions/68539083/inflate-layout-from-applicationcontext-i-e-in-a-contentprovider/68567186#68567186 - *
- * Future plan: draw directly on a view.
- */
-public class SharePictureTrackExporter implements TrackExporter {
-
- private static final String TAG = SharePictureTrackExporter.class.getSimpleName();
-
- private final static int imageWidth = 1024;
-
- private final Context context;
-
- private final Bitmap.CompressFormat compressFormat;
-
- public SharePictureTrackExporter(Context context, Bitmap.CompressFormat compressFormat) {
- this.context = context;
- this.compressFormat = compressFormat;
- }
-
- @Override
- public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) {
- if (tracks.length > 1) {
- Log.e(TAG, "Not yet implemented.");
- return false;
- }
-
- return writeTrack(tracks[0], outputStream);
- }
-
- @Override
- public boolean writeTrack(Track track, @NonNull OutputStream outputStream) {
- int imageHeight = imageWidth / 4 * 3;
-
- TrackSharePictureBinding viewBinding = TrackSharePictureBinding.inflate(LayoutInflater.from(context));
- viewBinding.sharePictureCategory.setText(track.getCategory());
-
- boolean metricUnits = PreferencesUtils.isMetricUnits();
- TrackStatistics trackStatistics = track.getTrackStatistics();
-
- viewBinding.sharePictureTotalTime.setText(StringUtils.formatElapsedTimeWithHour(track.getTrackStatistics().getTotalTime()));
- viewBinding.sharePictureTotalDistance.setText(StringUtils.formatDistance(context, track.getTrackStatistics().getTotalDistance(), metricUnits));
- viewBinding.sharePictureGain.setText(StringUtils.formatAltitudeChange(context, trackStatistics.getTotalAltitudeGain(), metricUnits));
-
- // prepare rendering
- View view = viewBinding.getRoot();
- int widthSpec = View.MeasureSpec.makeMeasureSpec(imageWidth, View.MeasureSpec.EXACTLY);
- int heightSpec = View.MeasureSpec.makeMeasureSpec(imageHeight, View.MeasureSpec.EXACTLY);
- view.measure(widthSpec, heightSpec);
- view.layout(0, 0, imageWidth, imageHeight);
-
- // draw
- Canvas canvas = new Canvas();
- Bitmap bitmap = Bitmap.createBitmap(imageWidth, imageHeight, Bitmap.Config.ARGB_8888);
- canvas.setBitmap(bitmap);
-
- view.draw(canvas);
-
- // store
- return bitmap.compress(compressFormat, 100, outputStream);
- }
-}
diff --git a/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java b/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java
index 97729262c..8cf4a62e3 100644
--- a/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java
@@ -9,14 +9,12 @@ import android.util.Pair;
import androidx.annotation.Nullable;
import java.util.ArrayList;
-import java.util.Arrays;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.data.ShareContentProvider;
import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.data.models.Track;
-import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.util.FileUtils;
@@ -47,6 +45,7 @@ public class ShareUtils {
trackDescription = track == null ? "" : new DescriptionGenerator(context).generateTrackDescription(track, false);
}
+ String mime = "";
ArrayList