bug fixes, chores, docs v3.14.8 (#80)

This commit is contained in:
eddyizm 2025-08-31 12:43:06 -07:00 committed by GitHub
commit fe2c163aaa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 196 additions and 10 deletions

View file

@ -30,6 +30,10 @@ Moved details to [CHANGELOG.md](https://github.com/eddyizm/tempo/blob/main/CHANG
Fork [**sponsorship here**](https://ko-fi.com/eddyizm). Fork [**sponsorship here**](https://ko-fi.com/eddyizm).
## Usage
[Documentation](USAGE.md) (work in progress)
## Features ## Features
- **Subsonic Integration**: Tempo seamlessly integrates with your Subsonic server, providing you with easy access to your entire music collection on the go. - **Subsonic Integration**: Tempo seamlessly integrates with your Subsonic server, providing you with easy access to your entire music collection on the go.
- **Sleek and Intuitive UI**: Enjoy a clean and user-friendly interface designed to enhance your music listening experience, tailored to your preferences and listening history. - **Sleek and Intuitive UI**: Enjoy a clean and user-friendly interface designed to enhance your music listening experience, tailored to your preferences and listening history.

146
USAGE.md Normal file
View file

@ -0,0 +1,146 @@
# App Name Usage Guide
[<- back home](README.md)
## Table of Contents
- [Prerequisites](#prerequisites)
- [Getting Started](#getting-started)
- [Server Configuration](#server-configuration)
- [Main Features](#main-features)
- [Navigation](#navigation)
- [Playback Controls](#playback-controls)
- [Favorites](#favorites)
- [Playlist Management](#playlist-management)
- [Android Auto](#android-auto)
- [Settings](#settings)
- [Troubleshooting](#troubleshooting)
## Prerequisites
**Important Notice**: This app is a Subsonic-compatible client and does not provide any music content itself. To use this application, you must have:
- An active Subsonic API server (or compatible service) already set up
- Valid login credentials for your Subsonic server
- Music content uploaded and organized on your server
### Verified backends
This app works with any service that implements the Subsonic API, including:
- [LMS - Lightweight Music Server](https://github.com/epoupon/lms) - *personal fave and my backend*
- [Navidrome](https://www.navidrome.org/)
- [Gonic](https://github.com/sentriz/gonic)
## Getting Started
### Installation
1. Download the APK from the [Releases](https://github.com/eddyizm/tempo/releases) section
2. Enable "Install from unknown sources" in your Android settings
3. Install the application
### First Launch
1. Open the application
2. You will be prompted to configure your server connection
3. Grant necessary permissions for media playback and background operation
## Server Configuration
### Initial Setup
**IN PROGRESS**
1. Enter your server URL (e.g., `https://your-subsonic-server.com`)
2. Provide your username and password
3. Test the connection to ensure proper configuration
### Advanced Settings
**TODO**
## Main Features
### Library View
**TODO**
### Now Playing Screen
**TODO**
## Navigation
### Bottom Navigation Bar
**IN PROGRESS**
- **Home**: Recently played and server recommendations
- **Library**: Your server's complete music collection
- **Download**: Locally downloaded files from server
## Playback Controls
### Streaming Controls
**TODO**
### Advanced Controls
**TODO**
## Favorites
### Favorites (aka heart aka star) to albums and artists
- Long pressing on an album gives you access to heart/unheart an album
<p align="center">
<img src="mockup/usage/fave_album.png" width=376>
</p>
- Long pressing on an artist cover gets you the same access to to heart/unheart an album
<p align="center">
<img src="mockup/usage/fave_artist.png" width=376>
</p>
## Playlist Management
### Server Playlists
**TODO**
### Creating Playlists
**TODO**
## Settings
## Android Auto
### Enabling on your head unit
- You have to enable Android Auto developer options, which are different from actual Android dev options. Then you have to enable "Unknown sources" in Android Auto, otherwise the app won't appear as it isn't downloaded from Play Store. (screenshots needed)
### Server Settings
**IN PROGRESS**
- Manage multiple server connections
- Configure sync intervals
- Set data usage limits for streaming
### Audio Settings
**IN PROGRESS**
- Streaming quality settings
- Offline caching preferences
### Appearance
**TODO**
## Troubleshooting
### Connection Issues
**TODO**
### Common Issues
**TODO**
### Support
For additional help:
- Question? Start a [Discussion](https://github.com/eddyizm/tempo/discussions)
- Open an [issue](https://github.com/eddyizm/tempo/issues) if you don't find a discussion solving your issue.
- Consult your Subsonic server's documentation
---
*Note: This app requires a pre-existing Subsonic-compatible server with music content.*

View file

@ -12,7 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import com.cappielloantonio.tempo.R; import com.cappielloantonio.tempo.R;
import com.cappielloantonio.tempo.databinding.DialogStarredSyncBinding; import com.cappielloantonio.tempo.databinding.DialogStarredAlbumSyncBinding;
import com.cappielloantonio.tempo.model.Download; import com.cappielloantonio.tempo.model.Download;
import com.cappielloantonio.tempo.util.DownloadUtil; import com.cappielloantonio.tempo.util.DownloadUtil;
import com.cappielloantonio.tempo.util.MappingUtil; import com.cappielloantonio.tempo.util.MappingUtil;
@ -26,10 +26,16 @@ import java.util.stream.Collectors;
public class StarredAlbumSyncDialog extends DialogFragment { public class StarredAlbumSyncDialog extends DialogFragment {
private StarredAlbumsSyncViewModel starredAlbumsSyncViewModel; private StarredAlbumsSyncViewModel starredAlbumsSyncViewModel;
private Runnable onCancel;
public StarredAlbumSyncDialog(Runnable onCancel) {
this.onCancel = onCancel;
}
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
DialogStarredSyncBinding bind = DialogStarredSyncBinding.inflate(getLayoutInflater()); DialogStarredAlbumSyncBinding bind = DialogStarredAlbumSyncBinding.inflate(getLayoutInflater());
starredAlbumsSyncViewModel = new ViewModelProvider(requireActivity()).get(StarredAlbumsSyncViewModel.class); starredAlbumsSyncViewModel = new ViewModelProvider(requireActivity()).get(StarredAlbumsSyncViewModel.class);
@ -74,6 +80,7 @@ public class StarredAlbumSyncDialog extends DialogFragment {
Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE);
negativeButton.setOnClickListener(v -> { negativeButton.setOnClickListener(v -> {
Preferences.setStarredAlbumsSyncEnabled(false); Preferences.setStarredAlbumsSyncEnabled(false);
if (onCancel != null) onCancel.run();
dialog.dismiss(); dialog.dismiss();
}); });
} }

View file

@ -26,6 +26,12 @@ import java.util.stream.Collectors;
public class StarredSyncDialog extends DialogFragment { public class StarredSyncDialog extends DialogFragment {
private StarredSyncViewModel starredSyncViewModel; private StarredSyncViewModel starredSyncViewModel;
private Runnable onCancel;
public StarredSyncDialog(Runnable onCancel) {
this.onCancel = onCancel;
}
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
@ -75,6 +81,7 @@ public class StarredSyncDialog extends DialogFragment {
Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE);
negativeButton.setOnClickListener(v -> { negativeButton.setOnClickListener(v -> {
Preferences.setStarredSyncEnabled(false); Preferences.setStarredSyncEnabled(false);
if (onCancel != null) onCancel.run();
dialog.dismiss(); dialog.dismiss();
}); });
} }

View file

@ -12,7 +12,7 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import android.widget.SearchView; import androidx.appcompat.widget.SearchView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View file

@ -21,6 +21,7 @@ import androidx.media3.common.util.UnstableApi;
import androidx.preference.ListPreference; import androidx.preference.ListPreference;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
import com.cappielloantonio.tempo.BuildConfig; import com.cappielloantonio.tempo.BuildConfig;
import com.cappielloantonio.tempo.R; import com.cappielloantonio.tempo.R;
@ -257,9 +258,11 @@ public class SettingsFragment extends PreferenceFragmentCompat {
findPreference("sync_starred_tracks_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { findPreference("sync_starred_tracks_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> {
if (newValue instanceof Boolean) { if (newValue instanceof Boolean) {
if ((Boolean) newValue) { if ((Boolean) newValue) {
StarredSyncDialog dialog = new StarredSyncDialog(); StarredSyncDialog dialog = new StarredSyncDialog(() -> {
((SwitchPreference)preference).setChecked(false);
});
dialog.show(activity.getSupportFragmentManager(), null); dialog.show(activity.getSupportFragmentManager(), null);
} }
} }
return true; return true;
}); });
@ -269,7 +272,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
findPreference("sync_starred_albums_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { findPreference("sync_starred_albums_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> {
if (newValue instanceof Boolean) { if (newValue instanceof Boolean) {
if ((Boolean) newValue) { if ((Boolean) newValue) {
StarredAlbumSyncDialog dialog = new StarredAlbumSyncDialog(); StarredAlbumSyncDialog dialog = new StarredAlbumSyncDialog(() -> {
((SwitchPreference)preference).setChecked(false);
});
dialog.show(activity.getSupportFragmentManager(), null); dialog.show(activity.getSupportFragmentManager(), null);
} }
} }

View file

@ -49,8 +49,9 @@
<TextView <TextView
android:id="@+id/subtitle_empty_description_label" android:id="@+id/subtitle_empty_description_label"
style="@style/LabelSmall" style="@style/LabelSmall"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:paddingStart="56dp" android:paddingStart="56dp"
android:paddingEnd="56dp" android:paddingEnd="56dp"
android:text="@string/download_info_empty_subtitle" /> android:text="@string/download_info_empty_subtitle" />

View file

@ -6,6 +6,7 @@
<string name="activity_battery_optimizations_summary">Por favor, desactive las optimizaciones de batería para continuar la reproducción multimedia mientras la pantalla está apagada.</string> <string name="activity_battery_optimizations_summary">Por favor, desactive las optimizaciones de batería para continuar la reproducción multimedia mientras la pantalla está apagada.</string>
<string name="activity_battery_optimizations_title">Optimizaciones de batería</string> <string name="activity_battery_optimizations_title">Optimizaciones de batería</string>
<string name="activity_info_offline_mode">Modo sin conexión</string> <string name="activity_info_offline_mode">Modo sin conexión</string>
<string name="album_bottom_sheet_add_to_playlist">Añadir a la lista de reproducción</string>
<string name="album_bottom_sheet_add_to_queue">Añadir a la cola</string> <string name="album_bottom_sheet_add_to_queue">Añadir a la cola</string>
<string name="album_bottom_sheet_download_all">Descargar todo</string> <string name="album_bottom_sheet_download_all">Descargar todo</string>
<string name="album_bottom_sheet_go_to_artist">Ir al artista</string> <string name="album_bottom_sheet_go_to_artist">Ir al artista</string>
@ -68,7 +69,7 @@
<string name="download_directory_dialog_positive_button">Descargar</string> <string name="download_directory_dialog_positive_button">Descargar</string>
<string name="download_directory_dialog_summary">Se descargarán todas las pistas de esta carpeta. Las pistas en las subcarpetas no se descargarán.</string> <string name="download_directory_dialog_summary">Se descargarán todas las pistas de esta carpeta. Las pistas en las subcarpetas no se descargarán.</string>
<string name="download_directory_dialog_title">Descargar las pistas</string> <string name="download_directory_dialog_title">Descargar las pistas</string>
<string name="download_info_empty_subtitle">Una vez que descargues un tema, lo encontrarás aquí</string> <string name="download_info_empty_subtitle">Una vez que descargues una pista, la encontrarás aquí</string>
<string name="download_info_empty_title">No hay descargas</string> <string name="download_info_empty_title">No hay descargas</string>
<string name="download_item_multiple_subtitle_formatter">%1$s • %2$s elementos</string> <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s elementos</string>
<string name="download_item_single_subtitle_formatter">%1$s elementos</string> <string name="download_item_single_subtitle_formatter">%1$s elementos</string>
@ -89,6 +90,7 @@
<string name="exo_download_notification_channel_name">Descargas</string> <string name="exo_download_notification_channel_name">Descargas</string>
<string name="filter_info_selection">Selecciona dos o más filtros</string> <string name="filter_info_selection">Selecciona dos o más filtros</string>
<string name="filter_title">Filtrar</string> <string name="filter_title">Filtrar</string>
<string name="filter_artist">Filtrar artistas</string>
<string name="filter_title_expanded">Filtrar géneros</string> <string name="filter_title_expanded">Filtrar géneros</string>
<string name="generic_list_page_count">(%1$d)</string> <string name="generic_list_page_count">(%1$d)</string>
<string name="generic_list_page_count_unknown">(+%1$d)</string> <string name="generic_list_page_count_unknown">(+%1$d)</string>
@ -115,6 +117,7 @@
<string name="home_sync_starred_download">Descargar</string> <string name="home_sync_starred_download">Descargar</string>
<string name="home_sync_starred_subtitle">Descargar estas pistas usará una gran cantidad de datos</string> <string name="home_sync_starred_subtitle">Descargar estas pistas usará una gran cantidad de datos</string>
<string name="home_sync_starred_title">Parece que hay algunas pistas destacadas para sincronizar</string> <string name="home_sync_starred_title">Parece que hay algunas pistas destacadas para sincronizar</string>
<string name="home_sync_starred_albums_subtitle">Los álbumes marcados como favoritos estarán disponibles en el modo sin conexión.</string>
<string name="home_title_best_of">Lo mejor de</string> <string name="home_title_best_of">Lo mejor de</string>
<string name="home_title_discovery">Descubrir</string> <string name="home_title_discovery">Descubrir</string>
<string name="home_title_discovery_shuffle_all_button">Todo en aleatorio</string> <string name="home_title_discovery_shuffle_all_button">Todo en aleatorio</string>
@ -159,7 +162,9 @@
<string name="login_title_expanded">Servidores de Subsonic</string> <string name="login_title_expanded">Servidores de Subsonic</string>
<string name="media_route_menu_title">Emitir</string> <string name="media_route_menu_title">Emitir</string>
<string name="menu_add_button">Añadir</string> <string name="menu_add_button">Añadir</string>
<string name="menu_add_to_playlist_button">Añadir a la lista de reproducción</string>
<string name="menu_download_all_button">Descargar todo</string> <string name="menu_download_all_button">Descargar todo</string>
<string name="menu_rate_album">Valorar álbum</string>
<string name="menu_download_label">Descargas</string> <string name="menu_download_label">Descargas</string>
<string name="menu_filter_all">Todo</string> <string name="menu_filter_all">Todo</string>
<string name="menu_filter_download">Descargado</string> <string name="menu_filter_download">Descargado</string>
@ -195,6 +200,7 @@
<string name="menu_sort_year">Año</string> <string name="menu_sort_year">Año</string>
<string name="player_playback_speed">%1$.2fx</string> <string name="player_playback_speed">%1$.2fx</string>
<string name="player_queue_clean_all_button">Limpiar la cola de reproducción</string> <string name="player_queue_clean_all_button">Limpiar la cola de reproducción</string>
<string name="player_queue_save_queue_success">Cola de reproducción guardada</string>
<string name="player_server_priority">Prioridad del servidor</string> <string name="player_server_priority">Prioridad del servidor</string>
<string name="player_unknown_format">Formato desconocido</string> <string name="player_unknown_format">Formato desconocido</string>
<string name="player_transcoding">Transcodificando</string> <string name="player_transcoding">Transcodificando</string>
@ -205,6 +211,7 @@
<string name="playlist_chooser_dialog_negative_button">Cancelar</string> <string name="playlist_chooser_dialog_negative_button">Cancelar</string>
<string name="playlist_chooser_dialog_neutral_button">Crear</string> <string name="playlist_chooser_dialog_neutral_button">Crear</string>
<string name="playlist_chooser_dialog_title">Añadir a una lista de reproducción</string> <string name="playlist_chooser_dialog_title">Añadir a una lista de reproducción</string>
<string name="playlist_chooser_dialog_toast_add_failure">Error al añadir a la lista</string>
<string name="playlist_counted_tracks">%1$d pistas • %2$s</string> <string name="playlist_counted_tracks">%1$d pistas • %2$s</string>
<string name="playlist_duration">Duración • %1$s</string> <string name="playlist_duration">Duración • %1$s</string>
<string name="playlist_editor_dialog_action_delete_toast">Pulsación larga para eliminar</string> <string name="playlist_editor_dialog_action_delete_toast">Pulsación larga para eliminar</string>
@ -247,7 +254,7 @@
<string name="rating_dialog_negative_button">Cancelar</string> <string name="rating_dialog_negative_button">Cancelar</string>
<string name="rating_dialog_positive_button">Guardar</string> <string name="rating_dialog_positive_button">Guardar</string>
<string name="rating_dialog_title">Valorar</string> <string name="rating_dialog_title">Valorar</string>
<string name="search_hint">Buscar tema, artistas o álbumes</string> <string name="search_hint">Buscar pista, artistas o álbumes</string>
<string name="search_info_minimum_characters">Introduzca al menos tres caracteres</string> <string name="search_info_minimum_characters">Introduzca al menos tres caracteres</string>
<string name="search_title_album">Álbumes</string> <string name="search_title_album">Álbumes</string>
<string name="settings_equalizer_summary">Ajustes de audio</string> <string name="settings_equalizer_summary">Ajustes de audio</string>
@ -306,6 +313,7 @@
<string name="settings_podcast_summary">Si está habilitada, se mostrará la sección de pódcasts. Reinicia la aplicación para que los cambios surtan efecto.</string> <string name="settings_podcast_summary">Si está habilitada, se mostrará la sección de pódcasts. Reinicia la aplicación para que los cambios surtan efecto.</string>
<string name="settings_audio_quality">Mostrar calidad de audio</string> <string name="settings_audio_quality">Mostrar calidad de audio</string>
<string name="settings_audio_quality_summary">La tasa de bits y el formato de audio se mostrarán para cada pista de audio.</string> <string name="settings_audio_quality_summary">La tasa de bits y el formato de audio se mostrarán para cada pista de audio.</string>
<string name="settings_song_rating_summary">Si está habilitada, muestra la valoración de la pista como barra de 5 estrellas en la página del control de reproducción.\n\n*Requiere reiniciar la aplicación</string>
<string name="settings_item_rating">Mostrar valoración de los elementos</string> <string name="settings_item_rating">Mostrar valoración de los elementos</string>
<string name="settings_queue_syncing_title">Sincronizar cola de reproducción para este usuario</string> <string name="settings_queue_syncing_title">Sincronizar cola de reproducción para este usuario</string>
<string name="settings_radio">Mostrar emisoras de radio</string> <string name="settings_radio">Mostrar emisoras de radio</string>
@ -314,6 +322,7 @@
<string name="settings_rounded_corner_size">Tamaño de las esquinas</string> <string name="settings_rounded_corner_size">Tamaño de las esquinas</string>
<string name="settings_rounded_corner_summary">Si está habilitada, establece un ángulo de curvatura para todas las portadas de álbumes. Los cambios se aplicarán después de reiniciar la app.</string> <string name="settings_rounded_corner_summary">Si está habilitada, establece un ángulo de curvatura para todas las portadas de álbumes. Los cambios se aplicarán después de reiniciar la app.</string>
<string name="settings_scan_title">Escanear biblioteca</string> <string name="settings_scan_title">Escanear biblioteca</string>
<string name="streaming_cache_storage_dialog_summary">Cambiar la ubicación de los archivos en caché a otro almacenamiento puede causar el borrado de todos los archivos en caché en el anterior almacenamiento.</string>
<string name="streaming_cache_storage_dialog_title">Seleccióna un tipo de almacenamiento</string> <string name="streaming_cache_storage_dialog_title">Seleccióna un tipo de almacenamiento</string>
<string name="streaming_cache_storage_external_dialog_positive_button">Externo</string> <string name="streaming_cache_storage_external_dialog_positive_button">Externo</string>
<string name="streaming_cache_storage_internal_dialog_negative_button">Interno</string> <string name="streaming_cache_storage_internal_dialog_negative_button">Interno</string>
@ -410,13 +419,20 @@
<string name="settings_summary_transcoding">La prioridad que se aplica al modo de transcodificación. Si se selecciona \"Reproducción directa\", la tasa de bits del archivo no cambiará.</string> <string name="settings_summary_transcoding">La prioridad que se aplica al modo de transcodificación. Si se selecciona \"Reproducción directa\", la tasa de bits del archivo no cambiará.</string>
<string name="starred_sync_dialog_summary">Descargar las pistas destacadas podría consumir una gran cantidad de datos</string> <string name="starred_sync_dialog_summary">Descargar las pistas destacadas podría consumir una gran cantidad de datos</string>
<string name="starred_sync_dialog_title">Sincronizar las pistas destacadas</string> <string name="starred_sync_dialog_title">Sincronizar las pistas destacadas</string>
<string name="starred_album_sync_dialog_title">Sincronizar álbumes favoritos</string>
<string name="streaming_cache_storage_dialog_sub_summary">Para que los cambios tengan efecto, reinicia la app.</string> <string name="streaming_cache_storage_dialog_sub_summary">Para que los cambios tengan efecto, reinicia la app.</string>
<string name="settings_summary_transcoding_download">Descarga los archivos multimedia transcodificados. Si esta opción está habilitada, no se usará el endpoint de descarga, sino las siguientes opciones.\n\nSi el formato de transcodificación para las descargas se establece en \"Descarga directa\", no se modificará la tasa de bits del archivo.</string> <string name="settings_summary_transcoding_download">Descarga los archivos multimedia transcodificados. Si esta opción está habilitada, no se usará el endpoint de descarga, sino las siguientes opciones.\n\nSi el formato de transcodificación para las descargas se establece en \"Descarga directa\", no se modificará la tasa de bits del archivo.</string>
<string name="settings_summary_transcoding_estimate_content_length">Cuando el archivo se transcodifica en tiempo real, el cliente normalmente no muestra la duración de la pista. Es posible solicitar a los servidores que soporten esta característica, que calculen la duración de la pista que se está reproduciendo, pero los tiempos de respuesta podrían aumentar.</string> <string name="settings_summary_transcoding_estimate_content_length">Cuando el archivo se transcodifica en tiempo real, el cliente normalmente no muestra la duración de la pista. Es posible solicitar a los servidores que soporten esta característica, que calculen la duración de la pista que se está reproduciendo, pero los tiempos de respuesta podrían aumentar.</string>
<string name="settings_sync_starred_albums_for_offline_use_title">Sincronizar álbumes favoritos para uso sin conexión</string>
<string name="settings_sync_starred_tracks_for_offline_use_summary">Si está habilitada, las pistas destacadas se descargarán para uso sin conexión.</string> <string name="settings_sync_starred_tracks_for_offline_use_summary">Si está habilitada, las pistas destacadas se descargarán para uso sin conexión.</string>
<string name="track_info_summary_downloaded_file">El archivo se ha descargado usando las APIs de Subsonic. El códec y la tasa de bits del archivo se mantienen sin cambios respecto al archivo de origen.</string> <string name="track_info_summary_downloaded_file">El archivo se ha descargado usando las APIs de Subsonic. El códec y la tasa de bits del archivo se mantienen sin cambios respecto al archivo de origen.</string>
<string name="track_info_summary_full_transcode">La aplicación pedirá al servidor transcodificar el archivo y modificar su tasa de bits. El códec pedido por el usuario es %1$s, con una tasa de bits de %2$s. Cualquier cambio en el códec y tasa de bits del archivo en el formato elegido será manejado por el servidor, que puede, o no, soportar esta operación.</string> <string name="track_info_summary_full_transcode">La aplicación pedirá al servidor transcodificar el archivo y modificar su tasa de bits. El códec pedido por el usuario es %1$s, con una tasa de bits de %2$s. Cualquier cambio en el códec y tasa de bits del archivo en el formato elegido será manejado por el servidor, que puede, o no, soportar esta operación.</string>
<string name="track_info_summary_original_file">La aplicación solo leerá el archivo original ofrecido por el servidor. La app pedirá al servidor, de forma explícita, el archivo sin transcodificar con la tasa de bits de origen.</string> <string name="track_info_summary_original_file">La aplicación solo leerá el archivo original ofrecido por el servidor. La app pedirá al servidor, de forma explícita, el archivo sin transcodificar con la tasa de bits de origen.</string>
<string name="track_info_summary_server_prioritized">La calidad del archivo a reproducir queda a decisión del servidor. La app no forzará la elección del códec y la tasa de bits para ninguna posible transcodificación.</string> <string name="track_info_summary_server_prioritized">La calidad del archivo a reproducir queda a decisión del servidor. La app no forzará la elección del códec y la tasa de bits para ninguna posible transcodificación.</string>
<string name="track_info_summary_transcoding_bitrate">La aplicación pedirá al servidor modificar la tasa de bits del archivo. El usuario ha pedido una tasa de bits de %1$s, mientras que el códec del archivo origen se mantendrá sin cambios. Cualquier cambio en la tasa de bits del archivo en el formato seleccionado será realizado por el servidor, que podrá soportar, o no, la operación.</string> <string name="track_info_summary_transcoding_bitrate">La aplicación pedirá al servidor modificar la tasa de bits del archivo. El usuario ha pedido una tasa de bits de %1$s, mientras que el códec del archivo origen se mantendrá sin cambios. Cualquier cambio en la tasa de bits del archivo en el formato seleccionado será realizado por el servidor, que podrá soportar, o no, la operación.</string>
<string name="playlist_chooser_dialog_toast_add_success">Se ha añadido a la lista</string>
<string name="settings_song_rating">Mostrar valoración de las pistas</string>
<string name="home_sync_starred_albums_title">Sincronizar álbumes favoritos</string>
<string name="settings_sync_starred_albums_for_offline_use_summary">Si está habilitada, los álbumes favoritos se descargarán para uso sin conexión.</string>
<string name="starred_album_sync_dialog_summary">Descargar los álbumes favoritos puede consumir una gran cantidad de datos.</string>
</resources> </resources>

View file

@ -317,7 +317,7 @@
<string name="settings_audio_quality">Show audio quality</string> <string name="settings_audio_quality">Show audio quality</string>
<string name="settings_audio_quality_summary">The bitrate and audio format will be shown for each audio track.</string> <string name="settings_audio_quality_summary">The bitrate and audio format will be shown for each audio track.</string>
<string name="settings_song_rating">Show song star rating</string> <string name="settings_song_rating">Show song star rating</string>
<string name="settings_song_rating_summary">If enabled, hides 5 star rating for track on song page\n\n*Requires App restart</string> <string name="settings_song_rating_summary">If enabled, shows 5 star rating for track on song page\n\n*Requires App restart</string>
<string name="settings_item_rating">Show item rating</string> <string name="settings_item_rating">Show item rating</string>
<string name="settings_item_rating_summary">If enabled, the item\'s rating and whether it is marked as a favorite will be displayed.</string> <string name="settings_item_rating_summary">If enabled, the item\'s rating and whether it is marked as a favorite will be displayed.</string>
<string name="settings_queue_syncing_countdown">Sync timer</string> <string name="settings_queue_syncing_countdown">Sync timer</string>

BIN
mockup/usage/fave_album.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB