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:
co-authored by
Claude Sonnet 5
parent
9e65ddcbb5
commit
f0313724d4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user