From 234bdf686e6d28df3e39a3e94d17e43b64b88d3c Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 14 Oct 2019 11:49:06 -0300 Subject: [PATCH 1/3] [android] Raise minimum API level to 16 --- bramble-android/build.gradle | 2 +- .../plugin/tor/AndroidTorPluginFactory.java | 3 +- .../system/AndroidSecureRandomProvider.java | 4 +- briar-android/build.gradle | 2 +- .../briar/android/BackgroundMonitor.java | 54 ------------------- .../briar/android/BriarApplicationImpl.java | 15 ++---- .../android/ScreenFilterMonitorImpl.java | 2 +- .../android/conversation/ImageActivity.java | 9 ++-- .../android/keyagreement/CameraView.java | 2 +- .../android/reporting/BriarReportPrimer.java | 11 ++-- .../android/view/CompositeSendButton.java | 32 ++++------- 11 files changed, 27 insertions(+), 109 deletions(-) delete mode 100644 briar-android/src/main/java/org/briarproject/briar/android/BackgroundMonitor.java diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle index 2e6da0d52..5606e4ef8 100644 --- a/bramble-android/build.gradle +++ b/bramble-android/build.gradle @@ -9,7 +9,7 @@ android { buildToolsVersion '28.0.3' defaultConfig { - minSdkVersion 14 + minSdkVersion 16 targetSdkVersion 26 versionCode 10109 versionName "1.1.9" diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java index 405354975..7d8a15258 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java @@ -1,7 +1,6 @@ package org.briarproject.bramble.plugin.tor; import android.content.Context; -import android.os.Build; import org.briarproject.bramble.api.battery.BatteryManager; import org.briarproject.bramble.api.event.EventBus; @@ -102,7 +101,7 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { return null; } // Use position-independent executable for SDK >= 16 - if (Build.VERSION.SDK_INT >= 16) architecture += "_pie"; + architecture += "_pie"; Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL, MAX_POLLING_INTERVAL, BACKOFF_BASE); diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java index 0403ff99b..b78d24420 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java @@ -23,6 +23,7 @@ import javax.annotation.concurrent.Immutable; import javax.inject.Inject; import static android.content.Context.WIFI_SERVICE; +import static android.os.Build.VERSION.SDK_INT; import static android.provider.Settings.Secure.ANDROID_ID; @Immutable @@ -74,8 +75,7 @@ class AndroidSecureRandomProvider extends UnixSecureRandomProvider { // Silence strict mode StrictMode.ThreadPolicy tp = StrictMode.allowThreadDiskWrites(); super.writeSeed(); - if (Build.VERSION.SDK_INT >= 16 && Build.VERSION.SDK_INT <= 18) - applyOpenSslFix(); + if (SDK_INT <= 18) applyOpenSslFix(); StrictMode.setThreadPolicy(tp); } diff --git a/briar-android/build.gradle b/briar-android/build.gradle index b60c34261..915248827 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -20,7 +20,7 @@ android { buildToolsVersion '28.0.3' defaultConfig { - minSdkVersion 15 + minSdkVersion 16 targetSdkVersion 26 versionCode 10109 versionName "1.1.9" diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BackgroundMonitor.java b/briar-android/src/main/java/org/briarproject/briar/android/BackgroundMonitor.java deleted file mode 100644 index 114ad3300..000000000 --- a/briar-android/src/main/java/org/briarproject/briar/android/BackgroundMonitor.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.briarproject.briar.android; - -import android.app.Activity; -import android.app.Application.ActivityLifecycleCallbacks; -import android.os.Bundle; - -import org.briarproject.bramble.api.nullsafety.NotNullByDefault; - -import java.util.concurrent.atomic.AtomicInteger; - -import javax.annotation.Nullable; -import javax.annotation.concurrent.ThreadSafe; - -@ThreadSafe -@NotNullByDefault -class BackgroundMonitor implements ActivityLifecycleCallbacks { - - private final AtomicInteger foregroundActivities = new AtomicInteger(0); - - boolean isRunningInBackground() { - return foregroundActivities.get() == 0; - } - - @Override - public void onActivityCreated(Activity a, @Nullable Bundle state) { - } - - @Override - public void onActivityStarted(Activity a) { - foregroundActivities.incrementAndGet(); - } - - @Override - public void onActivityResumed(Activity a) { - } - - @Override - public void onActivityPaused(Activity a) { - } - - @Override - public void onActivityStopped(Activity a) { - foregroundActivities.decrementAndGet(); - } - - @Override - public void onActivitySaveInstanceState(Activity a, - @Nullable Bundle outState) { - } - - @Override - public void onActivityDestroyed(Activity a) { - } -} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java index a7de9fb1c..c48ca9ffe 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java @@ -34,7 +34,6 @@ import java.util.logging.LogRecord; import java.util.logging.Logger; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND; -import static android.os.Build.VERSION.SDK_INT; import static java.util.logging.Level.FINE; import static java.util.logging.Level.INFO; import static java.util.logging.Logger.getLogger; @@ -86,7 +85,6 @@ public class BriarApplicationImpl extends Application getLogger(BriarApplicationImpl.class.getName()); private final CachingLogHandler logHandler = new CachingLogHandler(); - private final BackgroundMonitor backgroundMonitor = new BackgroundMonitor(); private AndroidComponent applicationComponent; private volatile SharedPreferences prefs; @@ -127,9 +125,6 @@ public class BriarApplicationImpl extends Application applicationComponent = createApplicationComponent(); EmojiManager.install(new GoogleEmojiProvider()); - - if (SDK_INT < 16) - registerActivityLifecycleCallbacks(backgroundMonitor); } protected AndroidComponent createApplicationComponent() { @@ -191,12 +186,8 @@ public class BriarApplicationImpl extends Application @Override public boolean isRunningInBackground() { - if (SDK_INT >= 16) { - RunningAppProcessInfo info = new RunningAppProcessInfo(); - ActivityManager.getMyMemoryState(info); - return (info.importance != IMPORTANCE_FOREGROUND); - } else { - return backgroundMonitor.isRunningInBackground(); - } + RunningAppProcessInfo info = new RunningAppProcessInfo(); + ActivityManager.getMyMemoryState(info); + return (info.importance != IMPORTANCE_FOREGROUND); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java index 56d542286..ebad8c2ec 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java @@ -150,7 +150,7 @@ class ScreenFilterMonitorImpl implements ScreenFilterMonitor, Service { // Get permissions String[] requestedPermissions = packageInfo.requestedPermissions; if (requestedPermissions == null) return false; - if (SDK_INT >= 16 && SDK_INT < 23) { + if (SDK_INT < 23) { // Check whether the permission has been requested and granted int[] flags = packageInfo.requestedPermissionsFlags; for (int i = 0; i < requestedPermissions.length; i++) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java index 1e1f3bf36..a6b2559d2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java @@ -142,11 +142,8 @@ public class ImageActivity extends BriarActivity viewPager.setAdapter(pagerAdapter); viewPager.setCurrentItem(position); - if (SDK_INT >= 16) { - viewModel.getOnImageClicked() - .observeEvent(this, this::onImageClicked); - window.getDecorView().setSystemUiVisibility(UI_FLAGS_DEFAULT); - } + viewModel.getOnImageClicked().observeEvent(this, this::onImageClicked); + window.getDecorView().setSystemUiVisibility(UI_FLAGS_DEFAULT); } @Override @@ -265,7 +262,7 @@ public class ImageActivity extends BriarActivity * when the previous activity (with visible status bar) is shown. */ private void showStatusBarBeforeFinishing() { - if (SDK_INT >= 16 && appBarLayout.getVisibility() == GONE) { + if (appBarLayout.getVisibility() == GONE) { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility(UI_FLAGS_DEFAULT); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java index d9cf8d01f..a9a9a8a95 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java @@ -340,7 +340,7 @@ public class CameraView extends SurfaceView implements SurfaceHolder.Callback, @UiThread private void setVideoStabilisation(Parameters params) { - if (SDK_INT >= 15 && params.isVideoStabilizationSupported()) { + if (params.isVideoStabilizationSupported()) { params.setVideoStabilization(true); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportPrimer.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportPrimer.java index 20ab6c173..47b0b3bbe 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportPrimer.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportPrimer.java @@ -90,14 +90,9 @@ public class BriarReportPrimer implements ReportPrimer { ActivityManager.MemoryInfo mem = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mem); String systemMemory; - if (Build.VERSION.SDK_INT >= 16) { - systemMemory = (mem.totalMem / 1024 / 1024) + " MiB total, " - + (mem.availMem / 1024 / 1204) + " MiB free, " - + (mem.threshold / 1024 / 1024) + " MiB threshold"; - } else { - systemMemory = (mem.availMem / 1024 / 1204) + " MiB free, " - + (mem.threshold / 1024 / 1024) + " MiB threshold"; - } + systemMemory = (mem.totalMem / 1024 / 1024) + " MiB total, " + + (mem.availMem / 1024 / 1204) + " MiB free, " + + (mem.threshold / 1024 / 1024) + " MiB threshold"; customData.put("System memory", systemMemory); // Virtual machine memory diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/CompositeSendButton.java b/briar-android/src/main/java/org/briarproject/briar/android/view/CompositeSendButton.java index bff28eed4..60b2b8e62 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/CompositeSendButton.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/CompositeSendButton.java @@ -13,7 +13,6 @@ import android.widget.ProgressBar; import org.briarproject.briar.R; import static android.content.Context.LAYOUT_INFLATER_SERVICE; -import static android.os.Build.VERSION.SDK_INT; import static java.util.Objects.requireNonNull; public class CompositeSendButton extends FrameLayout { @@ -75,33 +74,24 @@ public class CompositeSendButton extends FrameLayout { if (showImageButton) { imageButton.setVisibility(VISIBLE); sendButton.setEnabled(false); - if (SDK_INT <= 15) { + sendButton.clearAnimation(); + sendButton.animate().alpha(0f).withEndAction(() -> { sendButton.setVisibility(INVISIBLE); imageButton.setEnabled(true); - } else { - sendButton.clearAnimation(); - sendButton.animate().alpha(0f).withEndAction(() -> { - sendButton.setVisibility(INVISIBLE); - imageButton.setEnabled(true); - }).start(); - imageButton.clearAnimation(); - imageButton.animate().alpha(1f).start(); - } + }).start(); + imageButton.clearAnimation(); + imageButton.animate().alpha(1f).start(); } else { sendButton.setVisibility(VISIBLE); // enable/disable buttons right away to allow fast sending sendButton.setEnabled(sendEnabled); imageButton.setEnabled(false); - if (SDK_INT <= 15) { - imageButton.setVisibility(INVISIBLE); - } else { - sendButton.clearAnimation(); - sendButton.animate().alpha(1f).start(); - imageButton.clearAnimation(); - imageButton.animate().alpha(0f).withEndAction(() -> - imageButton.setVisibility(INVISIBLE) - ).start(); - } + sendButton.clearAnimation(); + sendButton.animate().alpha(1f).start(); + imageButton.clearAnimation(); + imageButton.animate().alpha(0f).withEndAction(() -> + imageButton.setVisibility(INVISIBLE) + ).start(); } } From fafcacf8083f98532d7d71a287b3e23de114b4a1 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 14 Oct 2019 15:56:44 +0100 Subject: [PATCH 2/3] Remove a couple more API version checks. --- .../briar/android/conversation/ImageActivity.java | 6 +----- .../briar/android/keyagreement/CameraView.java | 7 ++----- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java index a6b2559d2..5da18922d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java @@ -171,11 +171,7 @@ public class ImageActivity extends BriarActivity viewModel.setToolbarPosition( appBarLayout.getTop(), appBarLayout.getBottom() ); - if (SDK_INT >= 16) { - layout.getViewTreeObserver().removeOnGlobalLayoutListener(this); - } else { - layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); - } + layout.getViewTreeObserver().removeOnGlobalLayoutListener(this); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java index a9a9a8a95..bbb027939 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/CameraView.java @@ -35,7 +35,6 @@ import static android.hardware.Camera.Parameters.FOCUS_MODE_FIXED; import static android.hardware.Camera.Parameters.FOCUS_MODE_MACRO; import static android.hardware.Camera.Parameters.SCENE_MODE_AUTO; import static android.hardware.Camera.Parameters.SCENE_MODE_BARCODE; -import static android.os.Build.VERSION.SDK_INT; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logException; @@ -415,10 +414,8 @@ public class CameraView extends SurfaceView implements SurfaceHolder.Callback, } catch (RuntimeException e) { throw new CameraException(e); } - if (SDK_INT >= 15) { - LOG.info("Video stabilisation enabled: " - + params.getVideoStabilization()); - } + LOG.info("Video stabilisation enabled: " + + params.getVideoStabilization()); LOG.info("Scene mode: " + params.getSceneMode()); LOG.info("Focus mode: " + params.getFocusMode()); LOG.info("Flash mode: " + params.getFlashMode()); From a876d4cfb73c42679f4d3a5256778c5c0ea02f2e Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 14 Oct 2019 15:59:14 +0100 Subject: [PATCH 3/3] Remove a couple of redundant comments. --- .../bramble/plugin/tor/AndroidTorPluginFactory.java | 2 +- .../main/java/org/briarproject/briar/android/BriarService.java | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java index 7d8a15258..ed74881b5 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java @@ -100,7 +100,7 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { LOG.info("Tor is not supported on this architecture"); return null; } - // Use position-independent executable for SDK >= 16 + // Use position-independent executable architecture += "_pie"; Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL, diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java index 030d87c5d..46a10c7ff 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java @@ -238,8 +238,6 @@ public class BriarService extends Service { } else if (level == TRIM_MEMORY_RUNNING_LOW) { LOG.info("Trim memory: running low"); } else if (level == TRIM_MEMORY_RUNNING_CRITICAL) { - // This level may be received if SDK_INT < 16, although the - // constant isn't declared until API level 16 LOG.warning("Trim memory: running critically low"); // If we're not in the foreground, clear the UI to save memory if (app.isRunningInBackground()) hideUi();