From e51166c7a5c0990f50beabb6c1bde4bd14e6a0a3 Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 14:24:05 +0100 Subject: [PATCH 1/9] Upgrade AGP 8.6.1; Gradle 8.7 --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 2cdca7fd..68a51d63 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.2.1' + classpath 'com.android.tools.build:gradle:8.6.1' classpath 'com.google.gms:google-services:4.3.10' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 15de9024..48c0a02c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From ce822105700152afb468a78d4caf737c13159a18 Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 14:38:34 +0100 Subject: [PATCH 2/9] SDK 35 --- app/build.gradle | 4 ++-- pfLibrary | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a980f80a..92f8c180 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.application' android { - compileSdk 34 + compileSdk 35 defaultConfig { applicationId "com.samsung.microbit" minSdkVersion 21 - targetSdk 34 + targetSdk 35 // When target SDK version is 30+, // requestLegacyExternalStorage will continue to work for 29 Android 10 } diff --git a/pfLibrary b/pfLibrary index 3a208f42..23eda237 160000 --- a/pfLibrary +++ b/pfLibrary @@ -1 +1 @@ -Subproject commit 3a208f4216c705c972d9373acd00e390aa4a49b6 +Subproject commit 23eda23769258708116dec23c6c4d89b178a9302 From 8e9212eff678db85d749b7afc8e5ae001cda4b5b Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 14:46:08 +0100 Subject: [PATCH 3/9] Switch from jcenter to mavenCentral --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 68a51d63..7b1630db 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { - maven { url 'https://maven.google.com' } - jcenter() + google() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.6.1' @@ -13,6 +13,6 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() } } From 1867f4cc35490c1fb8a4a912a3bd7fb06bbe005e Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 16:48:16 +0100 Subject: [PATCH 4/9] Update libraries --- app/build.gradle | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 92f8c180..dc395fc5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,16 +33,16 @@ android { } dependencies { - implementation 'androidx.lifecycle:lifecycle-process:2.7.0' - testImplementation 'junit:junit:4.12' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.11.0' + implementation 'androidx.lifecycle:lifecycle-process:2.9.2' + testImplementation 'junit:junit:4.13.2' + implementation 'androidx.appcompat:appcompat:1.7.1' + implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.3.2' - implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19' + implementation 'androidx.recyclerview:recyclerview:1.4.0' + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.29' implementation 'no.nordicsemi.android:dfu:2.4.1' implementation project(':pfLibrary') - implementation 'com.google.android.gms:play-services-analytics:18.0.4' - implementation 'com.google.code.gson:gson:2.8.2' + implementation 'com.google.android.gms:play-services-analytics:18.1.1' + implementation 'com.google.code.gson:gson:2.13.1' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' } From c239d8091712377c496203a8f83b054cd7abe193 Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 16:52:07 +0100 Subject: [PATCH 5/9] Update libraries --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7b1630db..bf170ac3 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:8.6.1' - classpath 'com.google.gms:google-services:4.3.10' + classpath 'com.google.gms:google-services:4.4.3' } } From 6a11226b24b85252893142ca0efa9c4337ed5bd8 Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 17:14:34 +0100 Subject: [PATCH 6/9] Apply style OptOutEdgeToEdgeEnforcement to activities --- .../microbit/ui/activity/AudioRecorderActivity.java | 5 +++++ .../com/samsung/microbit/ui/activity/FetchActivity.java | 5 +++++ .../java/com/samsung/microbit/ui/activity/HelpWebView.java | 5 +++++ .../com/samsung/microbit/ui/activity/HomeActivity.java | 7 ++++++- .../com/samsung/microbit/ui/activity/MakeCodeWebView.java | 5 +++++ .../samsung/microbit/ui/activity/NotificationActivity.java | 7 +++++++ .../com/samsung/microbit/ui/activity/PairingActivity.java | 4 ++++ .../com/samsung/microbit/ui/activity/PopUpActivity.java | 5 +++++ .../com/samsung/microbit/ui/activity/ProjectActivity.java | 5 +++++ .../samsung/microbit/ui/activity/SplashScreenActivity.java | 5 +++++ app/src/main/res/values-v35/styles.xml | 7 +++++++ app/src/main/res/values/styles.xml | 7 +++++++ 12 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/values-v35/styles.xml diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/AudioRecorderActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/AudioRecorderActivity.java index e0fc7f66..f61d15de 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/AudioRecorderActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/AudioRecorderActivity.java @@ -108,6 +108,11 @@ public void onClick(View v) { @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); mLaunchActivity = false; diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/FetchActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/FetchActivity.java index 9a01d7c0..31de12ce 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/FetchActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/FetchActivity.java @@ -245,6 +245,11 @@ public void run() { @Override protected void onCreate(Bundle savedInstanceState) { logi("onCreate"); + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); displayCreate(); diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java b/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java index 102600de..7a7f5683 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java @@ -29,6 +29,11 @@ protected void onStop() { @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); setContentView(R.layout.activity_help_web_view); diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java index 60881ee6..a3fe9754 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java @@ -122,9 +122,14 @@ protected void onStop() { @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); logi("onCreate() :: "); + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_home); if(savedInstanceState == null) { diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java b/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java index a995861f..6782ca8c 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java @@ -69,6 +69,11 @@ protected void onStop() { @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); activityHandle = this; diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java index 1e1aa415..3586eea5 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java @@ -4,10 +4,17 @@ import android.content.Intent; import android.os.Bundle; +import com.samsung.microbit.R; + public class NotificationActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); // If this activity is the root activity of the task, the app is not running diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java index f37bc125..b30ef4f6 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java @@ -848,6 +848,10 @@ public void onPause() { protected void onCreate(Bundle savedInstanceState) { logi("onCreate() ::"); + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); MBApp application = MBApp.getApp(); diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java index b5604927..1e264bc0 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java @@ -189,6 +189,11 @@ private void releaseViews() { @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); Log.d("PopUpActivity", "onCreate() popuptype = " + getIntent().getIntExtra(INTENT_EXTRA_TYPE, PopUp.TYPE_NONE)); diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java index 2b1dd6df..27fd2932 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java @@ -623,6 +623,11 @@ private void releaseViews() { @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); MBApp application = MBApp.getApp(); diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java index 6bc0c42d..7ad3a036 100644 --- a/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java +++ b/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java @@ -44,6 +44,11 @@ public class SplashScreenActivity extends Activity implements View.OnClickListen @Override protected void onCreate(Bundle savedInstanceState) { + + // TODO: EdgeToEdge - Remove once activities handle insets. + // Call before the DecorView is accessed in setContentView + getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false); + super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash_screen); diff --git a/app/src/main/res/values-v35/styles.xml b/app/src/main/res/values-v35/styles.xml new file mode 100644 index 00000000..27f87aa2 --- /dev/null +++ b/app/src/main/res/values-v35/styles.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 984753b3..8a62a62e 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -324,4 +324,11 @@ + + + From 38774b30e0ed8317b28d694d708996eb347c5dd3 Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 18:00:53 +0100 Subject: [PATCH 7/9] Add .idea files to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 565a58e8..6842b843 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,8 @@ local.properties .idea/caches/ .idea/codeStyles/ .idea/deploymentTargetDropDown.xml +.idea/appInsightsSettings.xml +.idea/deploymentTargetSelector.xml *.iml # OS-specific files From d373c7b772c51f860752087ef3f1434b3e0ca39f Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Sun, 3 Aug 2025 20:18:47 +0100 Subject: [PATCH 8/9] Update pfLibrary libraries --- pfLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pfLibrary b/pfLibrary index 23eda237..99db8c73 160000 --- a/pfLibrary +++ b/pfLibrary @@ -1 +1 @@ -Subproject commit 23eda23769258708116dec23c6c4d89b178a9302 +Subproject commit 99db8c734e6addda43efa76183a50a7a9d32fe7a From 6c1b96587b2c7626f02395d317c9a60522d21bf9 Mon Sep 17 00:00:00 2001 From: Martin Williams Date: Mon, 4 Aug 2025 22:01:03 +0100 Subject: [PATCH 9/9] Remove deprecated screenOrientation=portrait --- app/src/main/AndroidManifest.xml | 8 +++----- .../microbit/ui/activity/NotificationActivity.java | 8 +++++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 87d66916..b02e2c12 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -129,7 +129,7 @@ + android:configChanges="orientation|screenSize" /> + android:launchMode="singleTask"/> + android:launchMode="singleTask"/>