2 Commits

Author SHA1 Message Date
renato97
305e1362a6 Feature: forzar máxima calidad de video (v10.0.7) 2026-01-26 22:25:00 +01:00
renato97
e9773c1353 Fix: ajuste de horarios +2 horas para Argentina (v10.0.6) 2026-01-26 22:20:25 +01:00
3 changed files with 31 additions and 4 deletions

View File

@@ -8,8 +8,8 @@ android {
applicationId "com.streamplayer" applicationId "com.streamplayer"
minSdk 21 minSdk 21
targetSdk 33 targetSdk 33
versionCode 100500 versionCode 100700
versionName "10.0.5" versionName "10.0.7"
buildConfigField "String", "DEVICE_REGISTRY_URL", '"http://194.163.191.200:4000"' buildConfigField "String", "DEVICE_REGISTRY_URL", '"http://194.163.191.200:4000"'
} }

View File

@@ -127,6 +127,8 @@ public class EventRepository {
JSONArray array = new JSONArray(json); JSONArray array = new JSONArray(json);
List<EventItem> events = new ArrayList<>(); List<EventItem> events = new ArrayList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
for (int i = 0; i < array.length(); i++) { for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i); JSONObject obj = array.getJSONObject(i);
String title = obj.optString("title"); String title = obj.optString("title");
@@ -135,8 +137,20 @@ public class EventRepository {
String status = obj.optString("status"); String status = obj.optString("status");
String link = obj.optString("link"); String link = obj.optString("link");
String normalized = normalizeLink(link); String normalized = normalizeLink(link);
// Ajustar hora: la web muestra hora de España, Argentina es +2 horas
String displayTime = time;
try {
if (time != null && !time.isEmpty()) {
LocalTime localTime = LocalTime.parse(time.trim(), formatter);
LocalTime adjustedTime = localTime.plusHours(2);
displayTime = adjustedTime.format(formatter);
}
} catch (DateTimeParseException ignored) {
}
long startMillis = parseEventTime(time); long startMillis = parseEventTime(time);
events.add(new EventItem(title, time, category, status, normalized, extractChannelName(link), startMillis)); events.add(new EventItem(title, displayTime, category, status, normalized, extractChannelName(link), startMillis));
} }
return Collections.unmodifiableList(events); return Collections.unmodifiableList(events);
} }
@@ -167,9 +181,11 @@ public class EventRepository {
try { try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
LocalTime localTime = LocalTime.parse(time.trim(), formatter); LocalTime localTime = LocalTime.parse(time.trim(), formatter);
// Ajustar hora: la web muestra hora de España, Argentina es +2 horas
LocalTime adjustedTime = localTime.plusHours(2);
ZoneId zone = ZoneId.of("America/Argentina/Buenos_Aires"); ZoneId zone = ZoneId.of("America/Argentina/Buenos_Aires");
LocalDate today = LocalDate.now(zone); LocalDate today = LocalDate.now(zone);
ZonedDateTime start = ZonedDateTime.of(LocalDateTime.of(today, localTime), zone); ZonedDateTime start = ZonedDateTime.of(LocalDateTime.of(today, adjustedTime), zone);
ZonedDateTime now = ZonedDateTime.now(zone); ZonedDateTime now = ZonedDateTime.now(zone);
if (start.isBefore(now.minusHours(12))) { if (start.isBefore(now.minusHours(12))) {
start = start.plusDays(1); start = start.plusDays(1);

View File

@@ -16,6 +16,7 @@ import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.PlaybackException; import com.google.android.exoplayer2.PlaybackException;
import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.DefaultRenderersFactory; import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource; import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource; import com.google.android.exoplayer2.source.hls.HlsMediaSource;
@@ -46,6 +47,7 @@ public class PlayerActivity extends AppCompatActivity {
private View playerToolbar; private View playerToolbar;
private ExoPlayer player; private ExoPlayer player;
private DefaultTrackSelector trackSelector;
private String channelName; private String channelName;
private String channelUrl; private String channelUrl;
private boolean overlayVisible = true; private boolean overlayVisible = true;
@@ -115,7 +117,16 @@ public class PlayerActivity extends AppCompatActivity {
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this) DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this)
.setEnableDecoderFallback(true) .setEnableDecoderFallback(true)
.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON); .setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON);
// Configurar track selector para máxima calidad
trackSelector = new DefaultTrackSelector(this);
DefaultTrackSelector.Parameters params = trackSelector.buildUponParameters()
.setForceHighestSupportedBitrate(true) // Forzar máximo bitrate
.build();
trackSelector.setParameters(params);
player = new ExoPlayer.Builder(this, renderersFactory) player = new ExoPlayer.Builder(this, renderersFactory)
.setTrackSelector(trackSelector)
.setSeekForwardIncrementMs(10_000) .setSeekForwardIncrementMs(10_000)
.setSeekBackIncrementMs(10_000) .setSeekBackIncrementMs(10_000)
.build(); .build();