diff --git a/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java b/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java index 66e36e97a0..cc425b167b 100644 --- a/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java +++ b/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java @@ -36,7 +36,6 @@ import android.os.Bundle; import android.os.Vibrator; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; -import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import androidx.appcompat.widget.SwitchCompat; @@ -89,6 +88,7 @@ import org.whispersystems.libsignal.fingerprint.NumericFingerprintGenerator; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; +import java.util.Locale; import static org.whispersystems.libsignal.SessionCipher.SESSION_LOCK; @@ -487,11 +487,10 @@ public class VerifyIdentityActivity extends PassphraseRequiredActionBarActivity valueAnimator.setObjectValues(0, Integer.parseInt(segment)); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Override public void onAnimationUpdate(ValueAnimator animation) { int value = (int) animation.getAnimatedValue(); - codeView.setText(String.format("%05d", value)); + codeView.setText(String.format(Locale.getDefault(), "%05d", value)); } }); diff --git a/src/org/thoughtcrime/securesms/components/AudioView.java b/src/org/thoughtcrime/securesms/components/AudioView.java index d5ea649223..2cb0b51863 100644 --- a/src/org/thoughtcrime/securesms/components/AudioView.java +++ b/src/org/thoughtcrime/securesms/components/AudioView.java @@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.mms.AudioSlide; import org.thoughtcrime.securesms.mms.SlideClickListener; import java.io.IOException; +import java.util.Locale; import java.util.concurrent.TimeUnit; @@ -193,7 +194,7 @@ public class AudioView extends FrameLayout implements AudioSlidePlayer.Listener if (seekProgress > seekBar.getProgress() || backwardsCounter > 3) { backwardsCounter = 0; this.seekBar.setProgress(seekProgress); - this.timestamp.setText(String.format("%02d:%02d", + this.timestamp.setText(String.format(Locale.getDefault(), "%02d:%02d", TimeUnit.MILLISECONDS.toMinutes(millis), TimeUnit.MILLISECONDS.toSeconds(millis))); } else { diff --git a/src/org/thoughtcrime/securesms/components/camera/CameraUtils.java b/src/org/thoughtcrime/securesms/components/camera/CameraUtils.java index 8feaa8fb13..8e715b7499 100644 --- a/src/org/thoughtcrime/securesms/components/camera/CameraUtils.java +++ b/src/org/thoughtcrime/securesms/components/camera/CameraUtils.java @@ -15,6 +15,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; @SuppressWarnings("deprecation") public class CameraUtils { @@ -30,7 +31,8 @@ public class CameraUtils { final int targetHeight = displayOrientation % 180 == 90 ? width : height; final double targetRatio = (double) targetWidth / targetHeight; - Log.d(TAG, String.format("getPreferredPreviewSize(%d, %d, %d) -> target %dx%d, AR %.02f", + Log.d(TAG, String.format(Locale.US, + "getPreferredPreviewSize(%d, %d, %d) -> target %dx%d, AR %.02f", displayOrientation, width, height, targetWidth, targetHeight, targetRatio)); @@ -39,7 +41,7 @@ public class CameraUtils { List bigEnough = new LinkedList<>(); for (Size size : sizes) { - Log.d(TAG, String.format(" %dx%d (%.02f)", size.width, size.height, (float)size.width / size.height)); + Log.d(TAG, String.format(Locale.US, " %dx%d (%.02f)", size.width, size.height, (float)size.width / size.height)); if (size.height == size.width * targetRatio && size.height >= targetHeight && size.width >= targetWidth) { ideals.add(size); diff --git a/src/org/thoughtcrime/securesms/database/EarlyReceiptCache.java b/src/org/thoughtcrime/securesms/database/EarlyReceiptCache.java index d29eee9ec4..c33cef405d 100644 --- a/src/org/thoughtcrime/securesms/database/EarlyReceiptCache.java +++ b/src/org/thoughtcrime/securesms/database/EarlyReceiptCache.java @@ -4,6 +4,7 @@ import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.util.LRUCache; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public class EarlyReceiptCache { @@ -14,7 +15,7 @@ public class EarlyReceiptCache { public synchronized void increment(long timestamp, Address origin) { Log.i(TAG, this+""); - Log.i(TAG, String.format("Early receipt: (%d, %s)", timestamp, origin.serialize())); + Log.i(TAG, String.format(Locale.US, "Early receipt: (%d, %s)", timestamp, origin.serialize())); Map receipts = cache.get(timestamp); @@ -37,7 +38,7 @@ public class EarlyReceiptCache { Map receipts = cache.remove(timestamp); Log.i(TAG, this+""); - Log.i(TAG, String.format("Checking early receipts (%d): %d", timestamp, receipts == null ? 0 : receipts.size())); + Log.i(TAG, String.format(Locale.US, "Checking early receipts (%d): %d", timestamp, receipts == null ? 0 : receipts.size())); return receipts != null ? receipts : new HashMap<>(); } diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobLogger.java b/src/org/thoughtcrime/securesms/jobmanager/JobLogger.java index c35f6dc1ac..9e664d1f53 100644 --- a/src/org/thoughtcrime/securesms/jobmanager/JobLogger.java +++ b/src/org/thoughtcrime/securesms/jobmanager/JobLogger.java @@ -3,6 +3,8 @@ package org.thoughtcrime.securesms.jobmanager; import androidx.annotation.NonNull; import android.text.TextUtils; +import java.util.Locale; + public class JobLogger { public static String format(@NonNull Job job, @NonNull String event) { @@ -18,7 +20,8 @@ public class JobLogger { : String.valueOf(job.getParameters().getMaxAttempts()); String lifespan = job.getParameters().getLifespan() == Job.Parameters.IMMORTAL ? "Immortal" : String.valueOf(job.getParameters().getLifespan()) + " ms"; - return String.format("[%s][%s]%s %s (Time Since Submission: %d ms, Lifespan: %s, Run Attempt: %d/%s)", + return String.format(Locale.US, + "[%s][%s]%s %s (Time Since Submission: %d ms, Lifespan: %s, Run Attempt: %d/%s)", id, job.getClass().getSimpleName(), tag, event, timeSinceSubmission, lifespan, runAttempt, maxAttempts); } } diff --git a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index 89f3342b76..7ec5fcf177 100644 --- a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalServiceAccountManager; +import java.util.Locale; import java.util.concurrent.TimeUnit; import javax.inject.Inject; @@ -103,7 +104,7 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment findPreference(TextSecurePreferences.SCREEN_LOCK_TIMEOUT) .setSummary(timeoutSeconds <= 0 ? getString(R.string.AppProtectionPreferenceFragment_none) : - String.format("%02d:%02d:%02d", hours, minutes, seconds)); + String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds)); } private void initializeVisibility() {