diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesCoordinator.java
index fcbf149260..414ad7daa3 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesCoordinator.java
@@ -145,8 +145,8 @@ public abstract class SonyHeadphonesCoordinator extends AbstractBLClassicDeviceC
}
addSettingsUnderHeader(deviceSpecificSettings, device, R.xml.devicesettings_header_other, new LinkedHashMap<>() {{
- put(SonyHeadphonesCapabilities.AudioSettingsOnlyOnSbcCodec, R.xml.devicesettings_sony_warning_wh1000xm3);
put(SonyHeadphonesCapabilities.AudioLDAC, R.xml.devicesettings_sony_headphones_audio_hd);
+ put(SonyHeadphonesCapabilities.AudioSettingsOnlyOnSbcCodec, R.xml.devicesettings_sony_warning_wh1000xm3);
put(SonyHeadphonesCapabilities.EqualizerSimple, R.xml.devicesettings_sony_headphones_equalizer);
put(SonyHeadphonesCapabilities.EqualizerWithCustomBands, R.xml.devicesettings_sony_headphones_equalizer_with_custom_bands);
put(SonyHeadphonesCapabilities.SoundPosition, R.xml.devicesettings_sony_headphones_sound_position);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java
index 3ac0a3c372..24b8a61748 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java
@@ -40,11 +40,13 @@ import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Parcel;
+import android.ranging.oob.DeviceHandle;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.MultiSelectListPreference;
import androidx.preference.Preference;
+import androidx.preference.SwitchPreferenceCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -55,6 +57,7 @@ import java.util.Locale;
import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.R;
+import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.prefs.AmbientSoundControl;
@@ -116,6 +119,35 @@ public class SonyHeadphonesSettingsCustomizer implements DeviceSpecificSettingsC
}
}
}
+
+ final Preference prefSonyWarningSbcCodec = handler.findPreference("pref_sony_warning_sbc_codec_1");
+ if (prefSonyWarningSbcCodec != null) {
+ final SwitchPreferenceCompat prefAudioHd = handler.findPreference(DeviceSettingsPreferenceConst.PREF_SONY_AUDIO_HD);
+ if (prefAudioHd != null) {
+ prefAudioHd.setOnPreferenceChangeListener((ignored, newValue) -> {
+ handleScbWarning((boolean) newValue, handler);
+ return true;
+ });
+ handleScbWarning(prefAudioHd.isChecked(), handler);
+ }
+ }
+ }
+
+ private void handleScbWarning(final boolean hdEnabled, final DeviceSpecificSettingsHandler handler) {
+ final Preference prefSonyWarningSbcCodec = handler.findPreference("pref_sony_warning_sbc_codec_1");
+ if (prefSonyWarningSbcCodec != null) {
+ prefSonyWarningSbcCodec.setVisible(hdEnabled);
+ }
+ final Preference[] prefsToToggle = new Preference[]{
+ handler.findPreference(PREF_SONY_EQUALIZER),
+ handler.findPreference(PREF_SONY_SOUND_POSITION),
+ handler.findPreference(PREF_SONY_SURROUND_MODE)
+ };
+ for (Preference preference : prefsToToggle) {
+ if (preference != null) {
+ preference.setEnabled(!hdEnabled);
+ }
+ }
}
@Override
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 29d1ca673a..9fa69e1111 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3385,6 +3385,7 @@
16k
Clear Bass
Audio HD
+ Enable higher quality audio codec (LDAC)
Audio Upsampling
NC/Ambient Button Function
Switch ambient sound
diff --git a/app/src/main/res/xml/devicesettings_sony_headphones_audio_hd.xml b/app/src/main/res/xml/devicesettings_sony_headphones_audio_hd.xml
index f73cb7e0c2..268c9a9e1b 100644
--- a/app/src/main/res/xml/devicesettings_sony_headphones_audio_hd.xml
+++ b/app/src/main/res/xml/devicesettings_sony_headphones_audio_hd.xml
@@ -5,5 +5,6 @@
android:icon="@drawable/ic_extension"
android:key="pref_sony_audio_hd"
android:layout="@layout/preference_checkbox"
+ android:summary="@string/sony_audio_hd_summary"
android:title="@string/sony_audio_hd" />