Sony WH-1000XM3: Disable unsupported preferences when Audio HD enabled

This commit is contained in:
José Rebelo
2026-04-19 16:24:38 +01:00
parent 9badec8e3a
commit b95ad084d6
4 changed files with 35 additions and 1 deletions
@@ -145,8 +145,8 @@ public abstract class SonyHeadphonesCoordinator extends AbstractBLClassicDeviceC
} }
addSettingsUnderHeader(deviceSpecificSettings, device, R.xml.devicesettings_header_other, new LinkedHashMap<>() {{ 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.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.EqualizerSimple, R.xml.devicesettings_sony_headphones_equalizer);
put(SonyHeadphonesCapabilities.EqualizerWithCustomBands, R.xml.devicesettings_sony_headphones_equalizer_with_custom_bands); put(SonyHeadphonesCapabilities.EqualizerWithCustomBands, R.xml.devicesettings_sony_headphones_equalizer_with_custom_bands);
put(SonyHeadphonesCapabilities.SoundPosition, R.xml.devicesettings_sony_headphones_sound_position); put(SonyHeadphonesCapabilities.SoundPosition, R.xml.devicesettings_sony_headphones_sound_position);
@@ -40,11 +40,13 @@ import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Parcel; import android.os.Parcel;
import android.ranging.oob.DeviceHandle;
import androidx.preference.EditTextPreference; import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference; import androidx.preference.ListPreference;
import androidx.preference.MultiSelectListPreference; import androidx.preference.MultiSelectListPreference;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.SwitchPreferenceCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -55,6 +57,7 @@ import java.util.Locale;
import java.util.Set; import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.R; 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.DeviceSpecificSettingsCustomizer;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsHandler; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.prefs.AmbientSoundControl; 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 @Override
+1
View File
@@ -3385,6 +3385,7 @@
<string name="sony_equalizer_band_16000">16k</string> <string name="sony_equalizer_band_16000">16k</string>
<string name="sony_equalizer_clear_bass">Clear Bass</string> <string name="sony_equalizer_clear_bass">Clear Bass</string>
<string name="sony_audio_hd">Audio HD</string> <string name="sony_audio_hd">Audio HD</string>
<string name="sony_audio_hd_summary">Enable higher quality audio codec (LDAC)</string>
<string name="sony_audio_upsampling">Audio Upsampling</string> <string name="sony_audio_upsampling">Audio Upsampling</string>
<string name="sony_button_function_nc_ambient">NC/Ambient Button Function</string> <string name="sony_button_function_nc_ambient">NC/Ambient Button Function</string>
<string name="sony_button_function_nc_ambient_switch_ambient_sound">Switch ambient sound</string> <string name="sony_button_function_nc_ambient_switch_ambient_sound">Switch ambient sound</string>
@@ -5,5 +5,6 @@
android:icon="@drawable/ic_extension" android:icon="@drawable/ic_extension"
android:key="pref_sony_audio_hd" android:key="pref_sony_audio_hd"
android:layout="@layout/preference_checkbox" android:layout="@layout/preference_checkbox"
android:summary="@string/sony_audio_hd_summary"
android:title="@string/sony_audio_hd" /> android:title="@string/sony_audio_hd" />
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>