feat: Hide Equalizer option when it is not available

This commit is contained in:
Jaime García 2025-09-09 01:29:47 +02:00
parent e604c9ba86
commit 2e3330b63f
No known key found for this signature in database
GPG key ID: BC4E5F71A71BDA5B

View file

@ -1,9 +1,13 @@
package com.cappielloantonio.tempo.ui.fragment; package com.cappielloantonio.tempo.ui.fragment;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.ServiceConnection;
import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -31,6 +35,8 @@ import com.cappielloantonio.tempo.R;
import com.cappielloantonio.tempo.helper.ThemeHelper; import com.cappielloantonio.tempo.helper.ThemeHelper;
import com.cappielloantonio.tempo.interfaces.DialogClickCallback; import com.cappielloantonio.tempo.interfaces.DialogClickCallback;
import com.cappielloantonio.tempo.interfaces.ScanCallback; import com.cappielloantonio.tempo.interfaces.ScanCallback;
import com.cappielloantonio.tempo.service.EqualizerManager;
import com.cappielloantonio.tempo.service.MediaService;
import com.cappielloantonio.tempo.ui.activity.MainActivity; import com.cappielloantonio.tempo.ui.activity.MainActivity;
import com.cappielloantonio.tempo.ui.dialog.DeleteDownloadStorageDialog; import com.cappielloantonio.tempo.ui.dialog.DeleteDownloadStorageDialog;
import com.cappielloantonio.tempo.ui.dialog.DownloadStorageDialog; import com.cappielloantonio.tempo.ui.dialog.DownloadStorageDialog;
@ -54,6 +60,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
private ActivityResultLauncher<Intent> someActivityResultLauncher; private ActivityResultLauncher<Intent> someActivityResultLauncher;
private MediaService.LocalBinder mediaServiceBinder;
private boolean isServiceBound = false;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -105,6 +114,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
actionChangeDownloadStorage(); actionChangeDownloadStorage();
actionDeleteDownloadStorage(); actionDeleteDownloadStorage();
actionKeepScreenOn(); actionKeepScreenOn();
bindMediaService();
actionAppEqualizer(); actionAppEqualizer();
} }
@ -358,6 +369,39 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}); });
} }
private final ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mediaServiceBinder = (MediaService.LocalBinder) service;
isServiceBound = true;
checkEqualizerBands();
}
@Override
public void onServiceDisconnected(ComponentName name) {
mediaServiceBinder = null;
isServiceBound = false;
}
};
private void bindMediaService() {
Intent intent = new Intent(requireActivity(), MediaService.class);
intent.setAction(MediaService.ACTION_BIND_EQUALIZER);
requireActivity().bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
isServiceBound = true;
}
private void checkEqualizerBands() {
if (mediaServiceBinder != null) {
EqualizerManager eqManager = mediaServiceBinder.getEqualizerManager();
short numBands = eqManager.getNumberOfBands();
Preference appEqualizer = findPreference("app_equalizer");
if (appEqualizer != null) {
appEqualizer.setVisible(numBands > 0);
}
}
}
private void actionAppEqualizer() { private void actionAppEqualizer() {
Preference appEqualizer = findPreference("app_equalizer"); Preference appEqualizer = findPreference("app_equalizer");
if (appEqualizer != null) { if (appEqualizer != null) {
@ -374,4 +418,13 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}); });
} }
} }
@Override
public void onPause() {
super.onPause();
if (isServiceBound) {
requireActivity().unbindService(serviceConnection);
isServiceBound = false;
}
}
} }