Skip to content

Commit

Permalink
Android12+: use user-defined DynamicColors.
Browse files Browse the repository at this point in the history
  • Loading branch information
dennisguse committed Oct 10, 2023
1 parent a1ae389 commit 0ddd535
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/main/java/de/dennisguse/opentracks/Startup.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import android.os.StrictMode;
import android.util.Log;

import com.google.android.material.color.DynamicColors;

import java.lang.reflect.Method;

import de.dennisguse.opentracks.settings.PreferencesUtils;
Expand All @@ -28,18 +30,20 @@ public void onCreate() {

// Include version information into stack traces.
Log.i(TAG, BuildConfig.APPLICATION_ID + "; BuildType: " + BuildConfig.BUILD_TYPE + "; VersionName: " + BuildConfig.VERSION_NAME + "/" + BuildConfig.VERSION_NAME_FULL + " VersionCode: " + BuildConfig.VERSION_CODE);
// In debug builds: show thread and VM warnings.
if (BuildConfig.DEBUG) {
Log.d(TAG, "Enabling strict mode");
StrictMode.enableDefaults();
}

PreferencesUtils.initPreferences(this, getResources());
// Set default values of preferences on first start.
PreferencesUtils.resetPreferences(this, false);
PreferencesUtils.applyDefaultUnit();
PreferencesUtils.applyNightMode();


// In debug builds: show thread and VM warnings.
if (BuildConfig.DEBUG) {
Log.d(TAG, "Enabling strict mode");
StrictMode.enableDefaults();
if (PreferencesUtils.shouldUseDynamicColors()) {
DynamicColors.applyToActivitiesIfAvailable(this);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,11 @@ public static boolean shouldUseFullscreen() {
return getBoolean(R.string.stats_fullscreen_while_recording_key, DEFAULT);
}

public static boolean shouldUseDynamicColors() {
final boolean DEFAULT = resources.getBoolean(R.bool.settings_ui_dynamic_colors_default);
return getBoolean(R.string.settings_ui_dynamic_colors_key, DEFAULT);
}

public static boolean shouldVoiceAnnouncementOnDeviceSpeaker() {
final boolean DEFAULT = resources.getBoolean(R.bool.voice_on_device_speaker_default);
return getBoolean(R.string.voice_on_device_speaker_key, DEFAULT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;

import androidx.fragment.app.DialogFragment;
Expand Down Expand Up @@ -34,6 +35,9 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
return true;
});

Preference dynamicColors = findPreference(getString(R.string.settings_ui_dynamic_colors_key));
dynamicColors.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU);

setShowOnMapFormatOptions();
}

Expand Down
3 changes: 3 additions & 0 deletions src/main/res/values/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,9 @@
<string name="show_introduction_screen_key" translatable="false">showIntroduction</string>
<bool name="show_introduction_screen_default">true</bool>

<string name="settings_ui_dynamic_colors_key" translatable="false">uiDynamicColors</string>
<bool name="settings_ui_dynamic_colors_default" translatable="false">false</bool>

<!-- androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode() -->
<string name="night_mode_key" translatable="false">nightMode</string>
<string name="night_mode_default" translatable="false">@string/night_mode_system_value</string>
Expand Down
2 changes: 2 additions & 0 deletions src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,8 @@ limitations under the License.
<string name="settings_chart_by_time">By time</string>
<!-- Settings Recording -->
<string name="settings_recording_title">Recording</string>
<string name="settings_ui_dynamic_colors_title">Dynamic Colors</string>
<string name="settings_ui_dynamic_colors_summary">Use user-defined Dynamic Colors (requires Android 12+)</string>
<string name="settings_recording_customize_layout_title">Customize your recording layout</string>
<string name="settings_recording_customize_layout_select_columns">Data fields per row</string>
<string name="settings_recording_show_on_lockscreen_while_recording_title">Show statistics on lockscreen</string>
Expand Down
6 changes: 6 additions & 0 deletions src/main/res/xml/settings_user_interface.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
android:title="@string/settings_night_mode_title"
app:useSimpleSummaryProvider="true" />

<SwitchPreferenceCompat
android:defaultValue="@bool/settings_ui_dynamic_colors_default"
android:key="@string/settings_ui_dynamic_colors_key"
android:summary="@string/settings_ui_dynamic_colors_summary"
android:title="@string/settings_ui_dynamic_colors_title" />

<ListPreference
android:defaultValue="@string/show_on_map_format_ask"
android:key="@string/show_on_map_format_key"
Expand Down

0 comments on commit 0ddd535

Please sign in to comment.