feat(eq): android auto custom equalizer and robust device detection
Build & Deploy PluriWave / Análisis de código (push) Successful in 26s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m16s

- MainActivity: onListen re-emits the current active device and registers
  the audio device callback idempotently, so recreated activities resync
  instead of freezing the active-device id on a disconnected device.
- servicio_dispositivo_audio: resubscribir() re-opens the event channel;
  estado_ecualizador exposes refrescarDispositivoActual() with an
  in-flight guard, invoked on app resume and when opening advanced EQ
  options, clearing stale green-dot device selections.
- navegacion_auto/servicio_audio: new 'Personalizado' browse tree in
  Android Auto (5 band folders, 13 gain steps each) applied live via
  setBanda; preset and gain taps persist at device level when
  multi-device EQ is active and respect station/matrix overrides,
  with apply-before-persist ordering and children-changed notifications.
- l10n: regenerate stale generated localizations; add rxdart as direct
  dependency for the subscribeToChildren override.
This commit is contained in:
Javier Bautista Fernández
2026-07-22 10:26:02 +02:00
parent 3473034b58
commit 163ff69f7a
29 changed files with 1883 additions and 42 deletions
+54
View File
@@ -2395,6 +2395,60 @@ abstract class AppLocalizations {
/// In es, this message translates to:
/// **'Conectado'**
String get eqDeviceConnected;
/// No description provided for @localMusicSectionTitle.
///
/// In es, this message translates to:
/// **'Música local (Android Auto)'**
String get localMusicSectionTitle;
/// No description provided for @localMusicSectionDescription.
///
/// In es, this message translates to:
/// **'Elegí una carpeta de este dispositivo para explorar y reproducir sus archivos de audio desde el auto.'**
String get localMusicSectionDescription;
/// No description provided for @localMusicFolderNotConfigured.
///
/// In es, this message translates to:
/// **'No hay carpeta seleccionada'**
String get localMusicFolderNotConfigured;
/// No description provided for @localMusicFolderTitle.
///
/// In es, this message translates to:
/// **'Carpeta de música local'**
String get localMusicFolderTitle;
/// No description provided for @localMusicChoosePath.
///
/// In es, this message translates to:
/// **'Elegir carpeta'**
String get localMusicChoosePath;
/// No description provided for @localMusicChangePath.
///
/// In es, this message translates to:
/// **'Cambiar carpeta'**
String get localMusicChangePath;
/// No description provided for @localMusicFolderUpdated.
///
/// In es, this message translates to:
/// **'Carpeta de música local actualizada'**
String get localMusicFolderUpdated;
/// No description provided for @localMusicFolderSaveError.
///
/// In es, this message translates to:
/// **'No se pudo guardar la carpeta: {error}'**
String localMusicFolderSaveError(Object error);
/// No description provided for @localMusicFolderGenericName.
///
/// In es, this message translates to:
/// **'Carpeta seleccionada'**
String get localMusicFolderGenericName;
}
class _AppLocalizationsDelegate