diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b3fb3732..8a107622 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] # You need to run ./gradlew wrapper after updating the version -gradle = "7.3.3" +gradle = "7.5.1" navigation = "2.3.5" -gradlePlugin = "7.2.1" +gradlePlugin = "7.2.2" androidxcore = "1.6.0" ktlint = "0.43.2" ktlintGradle = "10.2.0" @@ -26,7 +26,7 @@ viewModelKtx = "2.4.1" retrofit = "2.9.0" jackson = "2.10.1" okhttp = "4.10.0" -koin = "3.0.2" +koin = "3.2.0" picasso = "2.71828" junit4 = "4.13.2" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7454180f..249e5832 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 757ed58b..8fad3f5a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 17 23:13:49 CEST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index c53aefaa..a69d9cb6 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright 2015-2021 the original authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,10 +32,10 @@ # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; -# * expansions $var, ${var}, ${var:-default}, ${var+SET}, -# ${var#prefix}, ${var%suffix}, and $( cmd ); -# * compound commands having a testable exit status, especially case; -# * various built-in commands including command, set, and ulimit. +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». # # Important for patching: # @@ -205,6 +205,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index ac1b06f9..53a6b238 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/ultrasonic/lint-baseline.xml b/ultrasonic/lint-baseline.xml index cb0bd135..8582d8ad 100644 --- a/ultrasonic/lint-baseline.xml +++ b/ultrasonic/lint-baseline.xml @@ -1,5 +1,5 @@ - + diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/audiofx/VisualizerController.java b/ultrasonic/src/main/java/org/moire/ultrasonic/audiofx/VisualizerController.java deleted file mode 100644 index 70e3a90b..00000000 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/audiofx/VisualizerController.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - This file is part of Subsonic. - - Subsonic is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Subsonic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Subsonic. If not, see . - - Copyright 2011 (C) Sindre Mehus - */ -package org.moire.ultrasonic.audiofx; - -import android.media.MediaPlayer; -import android.media.audiofx.Visualizer; - -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; - -import timber.log.Timber; - -/** - * Backward-compatible wrapper for {@link Visualizer}, which is API Level 9. - * - * @author Sindre Mehus - * @version $Id$ - */ -public class VisualizerController -{ - private static final int PREFERRED_CAPTURE_SIZE = 128; // Must be a power of two. - private static Boolean available = null; - private static final MutableLiveData instance = new MutableLiveData<>(); - - public Visualizer visualizer; - private int audioSessionId; - - /** - * Retrieves the VisualizerController as LiveData - */ - public static LiveData get() - { - return instance; - } - - /** - * Initializes the VisualizerController instance with a MediaPlayer - */ - public static void create(MediaPlayer mediaPlayer) - { - if (mediaPlayer == null) return; - if (!isAvailable()) return; - - VisualizerController controller = new VisualizerController(); - - try - { - controller.audioSessionId = mediaPlayer.getAudioSessionId(); - controller.visualizer = new Visualizer(controller.audioSessionId); - - int[] captureSizeRange = Visualizer.getCaptureSizeRange(); - int captureSize = Math.max(PREFERRED_CAPTURE_SIZE, captureSizeRange[0]); - captureSize = Math.min(captureSize, captureSizeRange[1]); - controller.visualizer.setCaptureSize(captureSize); - - instance.postValue(controller); - } - catch (Throwable x) - { - Timber.w(x, "Failed to create visualizer."); - } - } - - /** - * Releases the VisualizerController instance when the underlying MediaPlayer is no longer available - */ - public static void release() - { - VisualizerController controller = instance.getValue(); - if (controller == null) return; - - controller.visualizer.release(); - instance.postValue(null); - } - - /** - * Checks if the {@link Visualizer} class is available. - */ - private static boolean isAvailable() - { - if (available != null) return available; - try - { - Class.forName("android.media.audiofx.Visualizer"); - available = true; - } - catch (Exception ex) - { - Timber.i(ex, "CheckAvailable received an exception getting class for the Visualizer"); - available = false; - } - return available; - } -} \ No newline at end of file diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/view/VisualizerView.java b/ultrasonic/src/main/java/org/moire/ultrasonic/view/VisualizerView.java deleted file mode 100644 index 331b8903..00000000 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/view/VisualizerView.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - This file is part of Subsonic. - - Subsonic is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Subsonic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Subsonic. If not, see . - - Copyright 2011 (C) Sindre Mehus - */ -package org.moire.ultrasonic.view; - -import static org.koin.java.KoinJavaComponent.inject; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.media.audiofx.Visualizer; -import android.view.View; - -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.Observer; - -import org.moire.ultrasonic.audiofx.VisualizerController; -import org.moire.ultrasonic.service.MediaPlayerController; - -import kotlin.Lazy; -import timber.log.Timber; - -/** - * A simple class that draws waveform data received from a - * {@link Visualizer.OnDataCaptureListener#onWaveFormDataCapture} - * - * @author Sindre Mehus - * @version $Id$ - */ -public class VisualizerView extends View -{ - private static final int PREFERRED_CAPTURE_RATE_MILLIHERTZ = 20000; - - private final Paint paint = new Paint(); - private Lazy mediaPlayerControllerLazy = inject(MediaPlayerController.class); - - private byte[] data; - private float[] points; - private boolean active; - private Visualizer visualizer; - - public VisualizerView(final Context context) - { - super(context); - - paint.setStrokeWidth(2f); - paint.setAntiAlias(true); - paint.setColor(Color.rgb(0, 153, 204)); - - VisualizerController.get().observe((LifecycleOwner) context, new Observer() { - @Override - public void onChanged(VisualizerController controller) { - if (controller != null) { - Timber.d("VisualizerController Observer.onChanged received controller"); - visualizer = controller.visualizer; - setActive(true); - } else { - Timber.d("VisualizerController Observer.onChanged has no controller"); - visualizer = null; - setActive(false); - } - } - }); - } - - public boolean isActive() - { - return active; - } - - public void setActive(boolean value) - { - active = value; - int captureRate = Math.min(PREFERRED_CAPTURE_RATE_MILLIHERTZ, Visualizer.getMaxCaptureRate()); - if (active) - { - visualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() - { - @Override - public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) - { - updateVisualizer(waveform); - } - - @Override - public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) - { - } - }, captureRate, true, false); - } - else - { - if (visualizer != null) visualizer.setDataCaptureListener(null, captureRate, false, false); - } - - if (visualizer != null) visualizer.setEnabled(active); - invalidate(); - } - - private void updateVisualizer(byte[] waveform) - { - this.data = waveform; - invalidate(); - } - - @Override - protected void onDraw(Canvas canvas) - { - super.onDraw(canvas); - - if (!active) - { - return; - } - - if (!mediaPlayerControllerLazy.getValue().isPlaying()) - { - return; - } - - if (data == null) - { - return; - } - - if (points == null || points.length < data.length * 4) - { - points = new float[data.length * 4]; - } - - int w = getWidth(); - int h = getHeight(); - - for (int i = 0; i < data.length - 1; i++) - { - points[i * 4] = w * i / (data.length - 1); - points[i * 4 + 1] = h / 2 + ((byte) (data[i] + 128)) * (h / 2) / 128; - points[i * 4 + 2] = w * (i + 1) / (data.length - 1); - points[i * 4 + 3] = h / 2 + ((byte) (data[i + 1] + 128)) * (h / 2) / 128; - } - - canvas.drawLines(points, paint); - } -} diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt index e95164c7..14da6243 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt @@ -9,7 +9,6 @@ import kotlinx.coroutines.launch import org.koin.android.ext.koin.androidContext import org.koin.core.context.startKoin import org.koin.core.context.stopKoin -import org.koin.core.logger.Level import org.moire.ultrasonic.BuildConfig import org.moire.ultrasonic.di.appPermanentStorage import org.moire.ultrasonic.di.applicationModule @@ -61,12 +60,14 @@ class UApp : MultiDexApplication() { internal fun startKoin() { initiated = true startKoin { - // TODO Currently there is a bug in Koin which makes necessary to set the log level to ERROR - logger(TimberKoinLogger(Level.ERROR)) - // logger(TimberKoinLogger(Level.INFO)) + // Sometimes Koin breaks when Kotlin version is upgraded, + // you can normally fix it by changing to logger(TimberKoinLogger(Level.ERROR)) + // See https://github.com/InsertKoinIO/koin/issues/1188 + logger(TimberKoinLogger()) // declare Android context androidContext(this@UApp) + // declare modules to use modules( applicationModule, diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/PlayerFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/PlayerFragment.kt index 06221a4b..a19e4cda 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/PlayerFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/PlayerFragment.kt @@ -72,7 +72,6 @@ import org.moire.ultrasonic.R import org.moire.ultrasonic.adapters.BaseAdapter import org.moire.ultrasonic.adapters.TrackViewBinder import org.moire.ultrasonic.audiofx.EqualizerController -import org.moire.ultrasonic.audiofx.VisualizerController import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline import org.moire.ultrasonic.domain.Identifiable import org.moire.ultrasonic.domain.Track @@ -91,7 +90,6 @@ import org.moire.ultrasonic.util.Settings import org.moire.ultrasonic.util.Util import org.moire.ultrasonic.util.toTrack import org.moire.ultrasonic.view.AutoRepeatButton -import org.moire.ultrasonic.view.VisualizerView import timber.log.Timber /** @@ -111,7 +109,6 @@ class PlayerFragment : private var jukeboxAvailable = false private var useFiveStarRating = false private var isEqualizerAvailable = false - private var isVisualizerAvailable = false // Detectors & Callbacks private lateinit var gestureScanner: GestureDetector @@ -130,8 +127,6 @@ class PlayerFragment : private var ioScope = CoroutineScope(Dispatchers.IO) // Views and UI Elements - private lateinit var visualizerViewLayout: LinearLayout - private lateinit var visualizerView: VisualizerView private lateinit var playlistNameView: EditText private lateinit var starMenuItem: MenuItem private lateinit var fiveStar1ImageView: ImageView @@ -198,7 +193,6 @@ class PlayerFragment : stopButton = view.findViewById(R.id.button_stop) playButton = view.findViewById(R.id.button_start) repeatButton = view.findViewById(R.id.button_repeat) - visualizerViewLayout = view.findViewById(R.id.current_playing_visualizer_layout) fiveStar1ImageView = view.findViewById(R.id.song_five_star_1) fiveStar2ImageView = view.findViewById(R.id.song_five_star_2) fiveStar3ImageView = view.findViewById(R.id.song_five_star_3) @@ -354,36 +348,6 @@ class PlayerFragment : registerForContextMenu(playlistView) - visualizerViewLayout.isVisible = false - VisualizerController.get().observe( - requireActivity() - ) { visualizerController -> - if (visualizerController != null) { - Timber.d("VisualizerController Observer.onChanged received controller") - visualizerView = VisualizerView(context) - visualizerViewLayout.addView( - visualizerView, - LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.MATCH_PARENT - ) - ) - - visualizerViewLayout.isVisible = visualizerView.isActive - - visualizerView.setOnTouchListener { _, _ -> - visualizerView.isActive = !visualizerView.isActive - mediaPlayerController.showVisualization = visualizerView.isActive - true - } - isVisualizerAvailable = true - } else { - Timber.d("VisualizerController Observer.onChanged has no controller") - visualizerViewLayout.isVisible = false - isVisualizerAvailable = false - } - } - EqualizerController.get().observe( requireActivity() ) { equalizerController -> @@ -489,10 +453,6 @@ class PlayerFragment : requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } - if (::visualizerView.isInitialized) { - visualizerView.isActive = mediaPlayerController.showVisualization - } - requireActivity().invalidateOptionsMenu() } @@ -510,9 +470,6 @@ class PlayerFragment : override fun onPause() { super.onPause() executorService.shutdown() - if (::visualizerView.isInitialized) { - visualizerView.isActive = mediaPlayerController.showVisualization - } } override fun onDestroyView() { @@ -533,7 +490,6 @@ class PlayerFragment : val screenOption = menu.findItem(R.id.menu_item_screen_on_off) val jukeboxOption = menu.findItem(R.id.menu_item_jukebox) val equalizerMenuItem = menu.findItem(R.id.menu_item_equalizer) - val visualizerMenuItem = menu.findItem(R.id.menu_item_visualizer) val shareMenuItem = menu.findItem(R.id.menu_item_share) val shareSongMenuItem = menu.findItem(R.id.menu_item_share_song) starMenuItem = menu.findItem(R.id.menu_item_star) @@ -556,10 +512,6 @@ class PlayerFragment : equalizerMenuItem.isEnabled = isEqualizerAvailable equalizerMenuItem.isVisible = isEqualizerAvailable } - if (visualizerMenuItem != null) { - visualizerMenuItem.isEnabled = isVisualizerAvailable - visualizerMenuItem.isVisible = isVisualizerAvailable - } val mediaPlayerController = mediaPlayerController val track = mediaPlayerController.currentMediaItem?.toTrack() @@ -692,20 +644,6 @@ class PlayerFragment : Navigation.findNavController(requireView()).navigate(R.id.playerToEqualizer) return true } - R.id.menu_item_visualizer -> { - val active = !visualizerView.isActive - visualizerView.isActive = active - - visualizerViewLayout.isVisible = visualizerView.isActive - - mediaPlayerController.showVisualization = visualizerView.isActive - Util.toast( - context, - if (active) R.string.download_visualizer_on - else R.string.download_visualizer_off - ) - return true - } R.id.menu_item_jukebox -> { val jukeboxEnabled = !mediaPlayerController.isJukeboxEnabled mediaPlayerController.isJukeboxEnabled = jukeboxEnabled diff --git a/ultrasonic/src/main/res/layout-land/current_playing.xml b/ultrasonic/src/main/res/layout-land/current_playing.xml index 9b55dcbf..923ec7f2 100644 --- a/ultrasonic/src/main/res/layout-land/current_playing.xml +++ b/ultrasonic/src/main/res/layout-land/current_playing.xml @@ -112,16 +112,6 @@ - - diff --git a/ultrasonic/src/main/res/layout/current_playing.xml b/ultrasonic/src/main/res/layout/current_playing.xml index 967832c9..4ed71bce 100644 --- a/ultrasonic/src/main/res/layout/current_playing.xml +++ b/ultrasonic/src/main/res/layout/current_playing.xml @@ -1,5 +1,6 @@ @@ -39,7 +40,8 @@ a:layout_height="60dip" a:layout_gravity="center" a:layout_margin="40dip" - a:orientation="horizontal"> + a:orientation="horizontal" + tools:ignore="UselessParent"> - - - diff --git a/ultrasonic/src/main/res/menu/nowplaying.xml b/ultrasonic/src/main/res/menu/nowplaying.xml index 65920d6a..40a469f5 100644 --- a/ultrasonic/src/main/res/menu/nowplaying.xml +++ b/ultrasonic/src/main/res/menu/nowplaying.xml @@ -49,10 +49,6 @@ a:id="@+id/menu_item_equalizer" app:showAsAction="never" a:title="@string/download.menu_equalizer"/> - Obrazovka zapnuta Zobrazit album Náhodně - Vizualizér Přehrávám mix Playlist úspěšně uložen. Chyba ukládání playlistu, zkuste později. @@ -71,8 +70,6 @@ Opakovat vše Opakování vypnuto Opakovat skladbu - Vizualizér vypnut. - Vizualizér zapnut. Zapnut Ekvalizér Vybrat předvolbu diff --git a/ultrasonic/src/main/res/values-de/strings.xml b/ultrasonic/src/main/res/values-de/strings.xml index 78bf0cbb..493dfa2b 100644 --- a/ultrasonic/src/main/res/values-de/strings.xml +++ b/ultrasonic/src/main/res/values-de/strings.xml @@ -76,7 +76,6 @@ Mischen Zufalls-Modus aktiviert Zufalls-Modus deaktiviert - Grafik Laden … Wiedergabeliste mischen Die Wiedergabeliste wurde gespeichert @@ -87,8 +86,6 @@ Alles wiederholen Wiederholen aus Titel wiederholen - Grafik ausgeschaltet - Grafik eingeschaltet Aktiviert Equalizer Voreinstellung wählen diff --git a/ultrasonic/src/main/res/values-es/strings.xml b/ultrasonic/src/main/res/values-es/strings.xml index 8da66ef5..ff664883 100644 --- a/ultrasonic/src/main/res/values-es/strings.xml +++ b/ultrasonic/src/main/res/values-es/strings.xml @@ -76,7 +76,6 @@ Aleatorio Modo aleatorio activado Modo aleatorio desactivado - Visualizador Almacenando en el buffer … Reproduciendo en modo aleatorio Lista de reproducción guardada con éxito. @@ -87,8 +86,6 @@ Repetir todo No repetir Repetir canción - Visualizador apagado. - Visualizador encendido. Activado Ecualizador Seleccionar preajuste diff --git a/ultrasonic/src/main/res/values-fr/strings.xml b/ultrasonic/src/main/res/values-fr/strings.xml index 5529b5ab..37fb31b7 100644 --- a/ultrasonic/src/main/res/values-fr/strings.xml +++ b/ultrasonic/src/main/res/values-fr/strings.xml @@ -72,7 +72,6 @@ Sur l\'écran Afficher l\'album Aléatoire - Visualiseur En lecture aléatoire Playlist enregistrée avec succès ! Échec de l\'enregistrement de la playlist, veuillez réessayer plus tard. @@ -82,8 +81,6 @@ Tout répéter Répétition désactivée Répéter le morceau - Visualiseur désactivé - Visualiseur activé Activé Égaliseur Sélection prédéfinie diff --git a/ultrasonic/src/main/res/values-hu/strings.xml b/ultrasonic/src/main/res/values-hu/strings.xml index 7160598c..196075f6 100644 --- a/ultrasonic/src/main/res/values-hu/strings.xml +++ b/ultrasonic/src/main/res/values-hu/strings.xml @@ -67,7 +67,6 @@ Kijelző be Ugrás az albumhoz Véletlen sorrendű - Visualizer Véletlen sorrendű Lejátszási lista mentése sikeres. Lejátszási lista mentése sikertelen, próbálja később! @@ -77,8 +76,6 @@ Összes ismétlése Ismétlés ki Dal ismétlése - Visualizer ki - Visualizer be Engedélyezve Equalizer Profil kiválasztása diff --git a/ultrasonic/src/main/res/values-it/strings.xml b/ultrasonic/src/main/res/values-it/strings.xml index f4f0855f..fdc47882 100644 --- a/ultrasonic/src/main/res/values-it/strings.xml +++ b/ultrasonic/src/main/res/values-it/strings.xml @@ -58,7 +58,6 @@ Schermo acceso Visualizza Album Casuale - Visualizzatore Riproduzione casuale Playlist salvata con successo Impossibile salvare la playlist, riprovare più tardi. @@ -68,8 +67,6 @@ Ripeti tutto Ripetizione spenta Ripeti canzone - Visualizzatore disattivato. - Visualizzatore attivato. Abilitato Equalizzatore Selezione Preset diff --git a/ultrasonic/src/main/res/values-nl/strings.xml b/ultrasonic/src/main/res/values-nl/strings.xml index 34b061ee..485c7faa 100644 --- a/ultrasonic/src/main/res/values-nl/strings.xml +++ b/ultrasonic/src/main/res/values-nl/strings.xml @@ -76,7 +76,6 @@ Willekeurig Willekeurige modus is ingeschakeld Willekeurige modus is uitgeschakeld - Visualisatie Bezig met bufferen… Bezig met willekeurig afspelen Afspeellijst is opgeslagen. @@ -87,8 +86,6 @@ Alles herhalen Herhalen uitgeschakeld Nummer herhalen - Visualisatie uitgeschakeld. - Visualisatie ingeschakeld. Ingeschakeld Equalizer Kies een voorinstelling diff --git a/ultrasonic/src/main/res/values-pl/strings.xml b/ultrasonic/src/main/res/values-pl/strings.xml index 838f42ab..b89280fd 100644 --- a/ultrasonic/src/main/res/values-pl/strings.xml +++ b/ultrasonic/src/main/res/values-pl/strings.xml @@ -61,7 +61,6 @@ Ekran włączony Wyświetl album Wymieszaj - Efekt wizualny Odtwarzanie losowe Playlista została zapisana. Błąd zapisu playlisty. Proszę spróbować później. @@ -71,8 +70,6 @@ Powtarzaj wszystko Powtarzanie wyłączone Powtarzaj utwór - Efekt wizualny wyłączony. - Efekt wizualny włączony. Włączony Korektor dźwięku Wybierz preset diff --git a/ultrasonic/src/main/res/values-pt-rBR/strings.xml b/ultrasonic/src/main/res/values-pt-rBR/strings.xml index b8602303..29923aaa 100644 --- a/ultrasonic/src/main/res/values-pt-rBR/strings.xml +++ b/ultrasonic/src/main/res/values-pt-rBR/strings.xml @@ -72,7 +72,6 @@ Tela Ligada Mostrar Álbum Misturar - Visualizador Tocando misturado Playlist salva com sucesso. Falha ao salvar a playlist, Tente mais tarde. @@ -82,8 +81,6 @@ Repetir Tudo Repetição Desligada Repetir Música - Visualizador Desligado. - Visualizador Ligado. Habilitado Equalizador Selecionar Configuração Prévia diff --git a/ultrasonic/src/main/res/values-pt/strings.xml b/ultrasonic/src/main/res/values-pt/strings.xml index 2d424bf1..845909df 100644 --- a/ultrasonic/src/main/res/values-pt/strings.xml +++ b/ultrasonic/src/main/res/values-pt/strings.xml @@ -61,7 +61,6 @@ Ecrã Ligado Mostrar Álbum Misturar - Visualizador Tocando misturado Playlist salva com sucesso. Falha ao salvar a playlist, Tente mais tarde. @@ -71,8 +70,6 @@ Repetir Tudo Repetição Desligada Repetir Música - Visualizador Desligado. - Visualizador Ligado. Habilitado Equalizador Selecionar Configuração Prévia diff --git a/ultrasonic/src/main/res/values-ru/strings.xml b/ultrasonic/src/main/res/values-ru/strings.xml index 654a7c14..dc0397ee 100644 --- a/ultrasonic/src/main/res/values-ru/strings.xml +++ b/ultrasonic/src/main/res/values-ru/strings.xml @@ -72,7 +72,6 @@ Включение дисплея Показать альбом Случайное воспроизведение - Визуализатор Игра в случайном порядке Плейлист был успешно сохранен. Не удалось сохранить плейлист, попробуйте позже. @@ -82,8 +81,6 @@ Повторить все Выключить повтор Повторить песню - Выключить визуализатор. - Включить визуализатор. Включено Эквалайзер Выберите предустановку diff --git a/ultrasonic/src/main/res/values-zh-rCN/strings.xml b/ultrasonic/src/main/res/values-zh-rCN/strings.xml index 5b102dc9..3d41ede2 100644 --- a/ultrasonic/src/main/res/values-zh-rCN/strings.xml +++ b/ultrasonic/src/main/res/values-zh-rCN/strings.xml @@ -72,7 +72,6 @@ 开启屏幕常亮 显示专辑 随机 - 可视化 随机播放 已成功保存播放列表。 保存播放列表失败,请重试。 @@ -82,8 +81,6 @@ 循环播放所有 关闭循环播放 循环播放 - 关闭可视化 - 打开可视化 开启 均衡器 选择预设 diff --git a/ultrasonic/src/main/res/values/colors.xml b/ultrasonic/src/main/res/values/colors.xml index 189a0d42..644fa62f 100644 --- a/ultrasonic/src/main/res/values/colors.xml +++ b/ultrasonic/src/main/res/values/colors.xml @@ -6,7 +6,6 @@ #0099cc #6200EE #BB86FC - #80000000 #000000 #333333 #ffffff diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index 594a509c..3f1b1f71 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -76,7 +76,6 @@ Shuffle Shuffle mode enabled Shuffle mode disabled - Visualizer Buffering … Playing shuffle Playlist was successfully saved. @@ -87,8 +86,6 @@ Repeat All Repeat Off Repeat Song - Turned off visualizer. - Turned on visualizer. Enabled Equalizer Select Preset