Раньше пресет эквалайзера в настройках был косметикой (лежал в DataStore, к звуку не подключён). Теперь — реальные системные эффекты на фикс. аудиосессии плеера: - AudioEffectsController: графический Equalizer (полосы устройства), BassBoost, Virtualizer (объём), LoudnessEnhancer (громкость тихих, до +12 дБ). Привязка к generateAudioSessionId() в PlayerController, переживает смену станций. Применение в реальном времени, сохранение в DataStore (commit на отпускании слайдера). - Отдельный экран EqualizerScreen (Настройки → ЗВУК → Эквалайзер): тумблер, системные пресеты + «Свой», слайдеры полос (±дБ), bass/virtualizer/loudness. - Эффекты best-effort: при отсутствии поддержки блок недоступен (null), UI скрывает. - Убран фейковый чип-пресет Flat/Rock/Pop/Jazz/Bass.
33 lines
1.5 KiB
Kotlin
33 lines
1.5 KiB
Kotlin
package com.radiola.ui.navigation
|
|
|
|
import androidx.compose.ui.graphics.vector.ImageVector
|
|
import com.composables.icons.lucide.AlarmClock
|
|
import com.composables.icons.lucide.Lucide
|
|
import com.composables.icons.lucide.Heart
|
|
import com.composables.icons.lucide.History
|
|
import com.composables.icons.lucide.Mic
|
|
import com.composables.icons.lucide.Radio
|
|
import com.composables.icons.lucide.Settings
|
|
import com.composables.icons.lucide.TrendingUp
|
|
|
|
sealed class NavDestinations(
|
|
val route: String,
|
|
val labelRes: String,
|
|
val icon: ImageVector,
|
|
val showInBottomBar: Boolean = true
|
|
) {
|
|
data object Stations : NavDestinations("stations", "Радио", Lucide.Radio)
|
|
data object Charts : NavDestinations("charts", "Чарты", Lucide.TrendingUp)
|
|
data object Favorites : NavDestinations("favorites", "Избранное", Lucide.Heart)
|
|
data object History : NavDestinations("history", "История", Lucide.History)
|
|
data object Recordings : NavDestinations("recordings", "Записи", Lucide.Mic)
|
|
data object Settings : NavDestinations("settings", "Настройки", Lucide.Settings)
|
|
data object Auth : NavDestinations("auth", "Вход", Lucide.Settings, showInBottomBar = false)
|
|
data object Alarms : NavDestinations("alarms", "Будильник", Lucide.AlarmClock, showInBottomBar = false)
|
|
data object Equalizer : NavDestinations("equalizer", "Эквалайзер", Lucide.Settings, showInBottomBar = false)
|
|
|
|
companion object {
|
|
val items = listOf(Stations, Charts, Favorites, History, Recordings, Settings)
|
|
}
|
|
}
|