- Update all channel URLs and event endpoint to streamtp10.com
- Create NetworkUtils for centralized OkHttpClient configuration
- Implement DNS fallback: Google (Primary) -> AdGuard (Secondary) -> System (Tertiary)
- Migrate EventRepository to use NetworkUtils client instead of HttpURLConnection
- Fix Referer header in StreamUrlResolver
Problemas corregidos:
1. Scroll Listener Corregido (último evento cortado)
- Cambiado de findFirstVisibleItemPosition() a findLastCompletelyVisibleItemPosition()
- Ahora el scroll solo se detiene cuando el último elemento está completamente visible
- Antes: el último evento aparecía solo a la mitad
2. Barra de Scroll Más Visible
- Opacidad aumentada de #4DFFFFFF (30%) a #CCFFFFFF (80%)
- Ancho de barra: 8dp (antes no definido)
- Estilo cambiado de outsideOverlay a insideInset
- scrollbarFadeDuration="0" para siempre visible
- Radio de esquinas: 4dp (antes 2dp)
3. URL Única (eliminar bloqueos de ISP)
- Eliminado sistema de fallback múltiples URLs
- Ahora usa solo: https://streamtp10.com/eventos.json
- Eliminado KEY_WORKING_URL y lógica de fallback
- Código más simple y eficiente
Archivos modificados:
- app/src/main/java/com/streamplayer/EventRepository.java (simplificado)
- app/src/main/java/com/streamplayer/MainActivity.java (scroll fix)
- app/src/main/res/drawable/scrollbar_vertical.xml (más visible)
- app/src/main/res/layout/activity_main.xml (scrollbar config)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Agregar sistema de fallback con múltiples URLs (streamtpcloud.com, streamtp10.com, streamtpmedia.com)
- Implementar seguimiento automático de redirecciones HTTP (301, 302, 303, 307, 308)
- Guardar última URL exitosa en SharedPreferences para optimizar futuras peticiones
- Corregir error "Unable to resolve host 'streamtpcloud.com'" cuando el dominio cambia
Resuelve issue donde los eventos no cargaban debido a cambios en el dominio del servidor.
La app ahora se adapta automáticamente sin necesidad de actualización.
- Updated EventRepository to point to streamtpcloud.com/eventos.json
- Updated ChannelRepository URLs to streamtpcloud.com
- Updated PlayerActivity Origin header
- Bumped version to 10.0.2
- Fixed: Value <! DOCTYPE cannot be converted to JSONArray in EventRepository
- Fixed: Added HTML validation in UpdateManager and DeviceRegistry
- Fixed: Improved HTTP error handling in StreamUrlResolver
- Improved: Error messages in PlayerActivity
- Bumped version to 9.4.3
Major Features:
- Dual tab interface (Channels and Events) with visible focus
- Real-time event status calculation (Live, Upcoming, Finished)
- Smart caching system for events (24-hour cache)
- Argentina timezone support (America/Argentina/Buenos_Aires)
UI/TV Improvements:
- Focusable tabs with bg_tab_selector for D-pad navigation
- Visual feedback with highlighted borders on focused tabs
- Consistent design between tabs and content cards
- Enhanced TV navigation experience
Real-Time Event System:
- EventRepository: Centralized event management with 24h cache
- EventAdapter: Optimized RecyclerView for event listings
- EventItem: Structured data model for events
- Dynamic status calculation (remaining time, live duration, completion)
- Automatic link normalization to global2.php
Technical Implementation:
- activity_main.xml: Complete dual-tab layout
- item_event.xml: Dedicated event item layout with RecyclerView
- bg_tab_selector.xml: Tab states (selected, focused, pressed)
- MainActivity.java: Tab switching and event management
- Automatic URL processing for seamless PlayerActivity integration
Time Zone Features:
- Argentina local time (America/Argentina/Buenos_Aires)
- Real-time status updates without page refresh
- "En Xh Ym" for upcoming events
- "En vivo durante 2h" status for live events
- "Finalizado" status for completed events
Solutions:
- Fixed web page "En vivo" not updating issue
- Provides always-current event status in app
- Direct event-to-player navigation without manual intervention
- Improved TV navigation with clear visual feedback
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>