Equalizer-Fix für Xiaomi/MIUI (Dolby Atmos) + In-App-YouTube-Suche als Extra-Tab

- openSystemPanel(): Xiaomi-Sound-Settings-Intent zuerst, dann
  Settings.ACTION_SOUND_SETTINGS, dann Android-Standard-Intent als
  Fallback. Behebt "kein System-Klangeffekte" trotz Dolby Atmos auf
  MIUI/HyperOS (POCO X7 Pro), wo der Standard-Intent keine Activity findet.
- Neuer Tab "YT-Suche": YouTube-Suche über den bestehenden
  /api/search-Endpunkt des Baka-Proxys, Ergebnisliste mit Thumbnail
  (YouTube-CDN), Titel, Dauer und Download-Knopf pro Treffer — derselbe
  Download-Weg wie im bestehenden Download-Tab.

574 Tests grün, flutter analyze ohne Befund, Kotlin kompiliert sauber
(gradlew :app:compileDebugKotlin). Xiaomi-Fix konnte nicht auf echter
Hardware getestet werden.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VM2JK5mV7AL1g2Rt6H6h9w
This commit is contained in:
Hermes (Server)
2026-08-25 21:03:46 +02:00
co-authored by Claude Sonnet 5
parent 9e65ddcbb5
commit f0313724d4
9 changed files with 796 additions and 7 deletions
@@ -6,6 +6,7 @@ import android.media.audiofx.AudioEffect
import android.media.audiofx.BassBoost
import android.media.audiofx.Equalizer
import android.media.audiofx.Virtualizer
import android.provider.Settings
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
@@ -116,14 +117,36 @@ class AudioEffectsBridge(private val activity: Activity) {
/**
* Oeffnet die Klangeffekt-Oberflaeche des Systems — auf POCO/Xiaomi ist
* das die Dolby-Atmos-Seite. Gibt false zurueck, wenn kein System die
* Anzeige unterstuetzt.
* das die Dolby-Atmos-Seite unter Einstellungen -> Ton. Gibt false
* zurueck, wenn kein System eine passende Anzeige unterstuetzt.
*
* MIUI/HyperOS registriert KEINE Activity fuer den Android-Standard-Intent
* [AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL] — resolveActivity
* liefert dort immer null, obwohl Dolby Atmos vorhanden ist ("kein
* System-Klangeffekte" trotz vorhandenem Dolby Atmos auf dem POCO X7 Pro).
* Der Xiaomi-Weg geht deshalb direkt ueber die System-Ton-Einstellungen,
* in denen Dolby Atmos als Eintrag liegt.
*/
private fun openSystemPanel(): Boolean {
val intent = Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL)
val xiaomiTonEinstellungen = Intent()
.setClassName("com.android.settings", "com.android.settings.Settings\$SoundSettingsActivity")
if (tryStartActivity(xiaomiTonEinstellungen)) return true
// Universeller Fallback: bringt auf jedem Android-Geraet die
// System-eigene Ton-Seite — auf MIUI/HyperOS ebenfalls die Seite mit
// dem Dolby-Atmos-Eintrag, falls obige Xiaomi-Activity mal umbenannt wird.
if (tryStartActivity(Intent(Settings.ACTION_SOUND_SETTINGS))) return true
// Letzter Versuch: der Android-Standard, funktioniert auf Geraeten,
// die tatsaechlich eine Effekt-Anzeige dafuer registrieren.
val standardIntent = Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL)
.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, sessionId)
.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, activity.packageName)
.putExtra(AudioEffect.EXTRA_CONTENT_TYPE, AudioEffect.CONTENT_TYPE_MUSIC)
return tryStartActivity(standardIntent)
}
private fun tryStartActivity(intent: Intent): Boolean {
if (intent.resolveActivity(activity.packageManager) == null) return false
activity.startActivity(intent)
return true