mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 00:59:49 +01:00
Add photo media quality selector when sending images.
This commit is contained in:
committed by
Greyson Parrelli
parent
8c9df8d3be
commit
dd934e0095
@@ -28,6 +28,8 @@ import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.attachments.Attachment;
|
||||
import org.thoughtcrime.securesms.blurhash.BlurHash;
|
||||
import org.thoughtcrime.securesms.database.AttachmentDatabase;
|
||||
import org.thoughtcrime.securesms.database.AttachmentDatabase.TransformProperties;
|
||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||
|
||||
public class ImageSlide extends Slide {
|
||||
@@ -47,7 +49,11 @@ public class ImageSlide extends Slide {
|
||||
}
|
||||
|
||||
public ImageSlide(Context context, Uri uri, String contentType, long size, int width, int height, boolean borderless, @Nullable String caption, @Nullable BlurHash blurHash) {
|
||||
super(context, constructAttachmentFromUri(context, uri, contentType, size, width, height, true, null, caption, null, blurHash, null, false, borderless, false, false));
|
||||
this(context, uri, contentType, size, width, height, borderless, caption, blurHash, null);
|
||||
}
|
||||
|
||||
public ImageSlide(Context context, Uri uri, String contentType, long size, int width, int height, boolean borderless, @Nullable String caption, @Nullable BlurHash blurHash, @Nullable TransformProperties transformProperties) {
|
||||
super(context, constructAttachmentFromUri(context, uri, contentType, size, width, height, true, null, caption, null, blurHash, null, false, borderless, false, false, transformProperties));
|
||||
this.borderless = borderless;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.util.Pair;
|
||||
|
||||
import androidx.annotation.IntRange;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.attachments.Attachment;
|
||||
@@ -23,7 +24,11 @@ public abstract class MediaConstraints {
|
||||
private static final String TAG = Log.tag(MediaConstraints.class);
|
||||
|
||||
public static MediaConstraints getPushMediaConstraints() {
|
||||
return new PushMediaConstraints();
|
||||
return getPushMediaConstraints(null);
|
||||
}
|
||||
|
||||
public static MediaConstraints getPushMediaConstraints(@Nullable SentMediaQuality sentMediaQuality) {
|
||||
return new PushMediaConstraints(sentMediaQuality);
|
||||
}
|
||||
|
||||
public static MediaConstraints getMmsMediaConstraints(int subscriptionId) {
|
||||
|
||||
@@ -14,13 +14,13 @@ import java.util.Arrays;
|
||||
|
||||
public class PushMediaConstraints extends MediaConstraints {
|
||||
|
||||
private static final int KB = 1024;
|
||||
private static final int MB = 1024 * KB;
|
||||
private static final int KB = 1024;
|
||||
private static final int MB = 1024 * KB;
|
||||
|
||||
private final MediaConfig currentConfig;
|
||||
|
||||
public PushMediaConstraints() {
|
||||
currentConfig = getCurrentConfig(ApplicationDependencies.getApplication());
|
||||
public PushMediaConstraints(@Nullable SentMediaQuality sentMediaQuality) {
|
||||
currentConfig = getCurrentConfig(ApplicationDependencies.getApplication(), sentMediaQuality);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,11 +80,14 @@ public class PushMediaConstraints extends MediaConstraints {
|
||||
return currentConfig.qualitySetting;
|
||||
}
|
||||
|
||||
private static @NonNull MediaConfig getCurrentConfig(@NonNull Context context) {
|
||||
private static @NonNull MediaConfig getCurrentConfig(@NonNull Context context, @Nullable SentMediaQuality sentMediaQuality) {
|
||||
if (Util.isLowMemory(context)) {
|
||||
return MediaConfig.LEVEL_1_LOW_MEMORY;
|
||||
}
|
||||
|
||||
if (sentMediaQuality == SentMediaQuality.HIGH) {
|
||||
return MediaConfig.LEVEL_3;
|
||||
}
|
||||
return LocaleFeatureFlags.getMediaQualityLevel().orElse(MediaConfig.getDefault(context));
|
||||
}
|
||||
|
||||
@@ -93,7 +96,7 @@ public class PushMediaConstraints extends MediaConstraints {
|
||||
|
||||
LEVEL_1(false, 1, MB, new int[] { 1600, 1024, 768, 512 }, 70),
|
||||
LEVEL_2(false, 2, (int) (1.5 * MB), new int[] { 2048, 1600, 1024, 768, 512 }, 75),
|
||||
LEVEL_3(false, 3, (int) (2.5 * MB), new int[] { 3072, 2048, 1600, 1024, 768, 512 }, 80);
|
||||
LEVEL_3(false, 3, (int) (3 * MB), new int[] { 4096, 3072, 2048, 1600, 1024, 768, 512 }, 75);
|
||||
|
||||
private final boolean isLowMemory;
|
||||
private final int level;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.thoughtcrime.securesms.mms;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
/**
|
||||
* Quality levels to send media at.
|
||||
*/
|
||||
public enum SentMediaQuality {
|
||||
STANDARD(0),
|
||||
HIGH(1);
|
||||
|
||||
|
||||
private final int code;
|
||||
|
||||
SentMediaQuality(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public static @NonNull SentMediaQuality fromCode(int code) {
|
||||
if (HIGH.code == code) {
|
||||
return HIGH;
|
||||
}
|
||||
return STANDARD;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user