From 22d2cf9edad427d94cd1c7b29161930e1608e0a3 Mon Sep 17 00:00:00 2001 From: renato97 Date: Tue, 25 Nov 2025 19:16:12 +0000 Subject: [PATCH] Update v9.4.5: Forced Update Flow & Focus Highlight --- app/build.gradle | 4 +- .../java/com/streamplayer/MainActivity.java | 39 ++--------- .../res/drawable/bg_events_refresh_button.xml | 70 ++++++++++++++++--- app/src/main/res/layout/activity_main.xml | 3 + app/src/main/res/values/colors.xml | 2 + app/src/main/res/values/strings.xml | 3 - dashboard/data/devices.json | 4 +- update-manifest.json | 14 ++-- 8 files changed, 83 insertions(+), 56 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index aa102a6..37d5973 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.streamplayer" minSdk 21 targetSdk 33 - versionCode 94400 - versionName "9.4.4" + versionCode 94500 + versionName "9.4.5" buildConfigField "String", "DEVICE_REGISTRY_URL", '"http://194.163.191.200:4000"' } diff --git a/app/src/main/java/com/streamplayer/MainActivity.java b/app/src/main/java/com/streamplayer/MainActivity.java index 012dff0..7e1dd5f 100644 --- a/app/src/main/java/com/streamplayer/MainActivity.java +++ b/app/src/main/java/com/streamplayer/MainActivity.java @@ -296,8 +296,7 @@ public class MainActivity extends AppCompatActivity { if (info == null) { return; } - boolean forceUpdate = info.isMandatory(BuildConfig.VERSION_CODE); - showUpdateDialog(info, forceUpdate); + showUpdateDialog(info, true); } private void showUpdateDialog(UpdateManager.UpdateInfo info, boolean mandatory) { @@ -308,20 +307,15 @@ public class MainActivity extends AppCompatActivity { updateDialog.dismiss(); } AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.ThemeOverlay_StreamPlayer_AlertDialog) - .setTitle(mandatory ? R.string.update_required_title : R.string.update_available_title) + .setTitle(R.string.update_required_title) .setMessage(buildUpdateMessage(info)) .setPositiveButton(R.string.update_action_download, (dialog, which) -> updateManager.downloadUpdate(MainActivity.this, info)) - .setNeutralButton(R.string.update_action_view_release, - (dialog, which) -> openReleasePage(info)); - if (mandatory) { - builder.setCancelable(false); - builder.setNegativeButton(R.string.update_action_close_app, - (dialog, which) -> closeAppCompletely()); - } else { - builder.setNegativeButton(R.string.update_action_later, null); - } + .setNegativeButton(R.string.update_action_close_app, + (dialog, which) -> closeAppCompletely()) + .setCancelable(false); updateDialog = builder.show(); + updateDialog.setCanceledOnTouchOutside(false); } private CharSequence buildUpdateMessage(UpdateManager.UpdateInfo info) { @@ -349,30 +343,9 @@ public class MainActivity extends AppCompatActivity { builder.append('\n'); builder.append(info.getReleaseNotesPreview()); } - if (!info.isMandatory(BuildConfig.VERSION_CODE)) { - builder.append("\n\n"); - builder.append(getString(R.string.update_optional_hint)); - } return builder.toString(); } - private void openReleasePage(UpdateManager.UpdateInfo info) { - String url = info.releasePageUrl; - if (url == null || url.isEmpty()) { - url = info.downloadUrl; - } - if (url == null || url.isEmpty()) { - Toast.makeText(this, R.string.update_error_missing_url, Toast.LENGTH_SHORT).show(); - return; - } - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - try { - startActivity(intent); - } catch (Exception e) { - Toast.makeText(this, R.string.update_error_open_release, Toast.LENGTH_SHORT).show(); - } - } - private void showBlockedDialog(String reason, String tokenPart) { if (isFinishing()) { return; diff --git a/app/src/main/res/drawable/bg_events_refresh_button.xml b/app/src/main/res/drawable/bg_events_refresh_button.xml index 982ff15..c30d557 100644 --- a/app/src/main/res/drawable/bg_events_refresh_button.xml +++ b/app/src/main/res/drawable/bg_events_refresh_button.xml @@ -1,10 +1,62 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 45a88c9..fedbbfd 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -95,6 +95,9 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:background="@drawable/bg_events_refresh_button" + android:clickable="true" + android:focusable="true" + android:focusableInTouchMode="true" android:textColor="@color/white" android:text="@string/events_refresh_action" android:textAllCaps="false" diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8d4afd4..d9b106c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,5 +4,7 @@ #FFFFFFFF #B3FFFFFF #FF1E88E5 + #FF42A5F5 + #661E88E5 #FF121212 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ee50432..ca418d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,16 +10,13 @@ Actualización obligatoria Actualización disponible Actualizar - Ver detalles Salir - Más tarde Versión instalada: %1$s (%2$d) Última versión publicada: %1$s (%2$d) Versiones anteriores a %1$d ya no están permitidas. Tamaño aproximado: %1$s Descargas registradas: %1$d Novedades - Puedes continuar usando la app, pero recomendamos instalar la actualización para obtener el mejor rendimiento. No se pudo verificar actualizaciones (%1$s) No se pudo abrir el detalle de la versión Respuesta vacía del servidor de releases diff --git a/dashboard/data/devices.json b/dashboard/data/devices.json index 849d9e5..9db2c32 100644 --- a/dashboard/data/devices.json +++ b/dashboard/data/devices.json @@ -6,8 +6,8 @@ "model": "SM-S928B", "manufacturer": "Samsung", "osVersion": "16 (API 36)", - "appVersionName": "9.4.4", - "appVersionCode": 94400, + "appVersionName": "9.4.5", + "appVersionCode": 94500, "firstSeen": "2025-11-23T22:31:13.359Z", "lastSeen": "2025-11-23T23:11:07.215Z", "blocked": false, diff --git a/update-manifest.json b/update-manifest.json index c52a4d0..5c2c753 100644 --- a/update-manifest.json +++ b/update-manifest.json @@ -1,10 +1,10 @@ { - "versionCode": 94400, - "versionName": "9.4.4", + "versionCode": 94500, + "versionName": "9.4.5", "minSupportedVersionCode": 91000, - "forceUpdate": false, - "downloadUrl": "https://gitea.cbcren.online/renato97/app/releases/download/v9.4.4/StreamPlayer-v9.4.4.apk", - "fileName": "StreamPlayer-v9.4.4.apk", - "sizeBytes": 5948849, - "notes": "StreamPlayer v9.4.4\n\nCorrecciones y mejoras:\n\n- Los botones de actualización y cierre en los diálogos ahora se ven correctamente en temas claros y oscuros.\n- Nuevo estilo oscuro en los diálogos para mejorar el contraste del texto y acciones.\n- Botón \"Actualizar ahora\" de eventos con diseño sólido para que destaque en cualquier fondo.\n- Se mantiene la actualización silenciosa y el caché de eventos para que siempre encuentres la grilla fresca al reiniciar.\n\nRecomendamos actualizar para asegurar la mejor experiencia con la sección de eventos y el sistema de actualizaciones." + "forceUpdate": true, + "downloadUrl": "https://gitea.cbcren.online/renato97/app/releases/download/v9.4.5/StreamPlayer-v9.4.5.apk", + "fileName": "StreamPlayer-v9.4.5.apk", + "sizeBytes": 5947752, + "notes": "StreamPlayer v9.4.5\n\nNovedades:\n\n- El botón \"Actualizar ahora\" de Eventos resalta cuando está enfocado o presionado para que siempre sepas que quedó seleccionado.\n- Las actualizaciones in-app ahora son obligatorias: cuando hay una versión nueva solo verás las opciones Actualizar o Salir.\n- Se eliminó el botón de \"Ver detalles\" para evitar redirecciones; todo sucede dentro de la app.\n- Ajustes visuales adicionales en los diálogos para mantener el contraste óptimo.\n\nActualiza para asegurarte de recibir inmediatamente las últimas correcciones sin pasos adicionales." }