diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 3b35d41fe..04dcf1893 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -539,6 +539,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List SpannableString span = new SpannableString(text); for (String s : map.keySet()) { int index = text.indexOf(s); + if (index == -1) continue; span.setSpan(getClickableSpan(map.get(s)), index, index + s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return span; diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 2e3ae0078..ae8ee893d 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -3,7 +3,6 @@ package com.fongmi.android.tv.player; import android.graphics.Color; import android.net.Uri; -import androidx.media3.common.C; import androidx.media3.common.MediaItem; import androidx.media3.common.MimeTypes; import androidx.media3.common.PlaybackException; @@ -17,8 +16,6 @@ import androidx.media3.datasource.DefaultHttpDataSource; import androidx.media3.datasource.HttpDataSource; import androidx.media3.datasource.cache.Cache; import androidx.media3.datasource.cache.CacheDataSource; -import androidx.media3.datasource.cache.CacheEvictor; -import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor; import androidx.media3.datasource.cache.NoOpCacheEvictor; import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.datasource.okhttp.OkHttpDataSource; @@ -59,13 +56,10 @@ import okhttp3.Call; public class ExoUtil { - private static LeastRecentlyUsedCacheEvictor usedCacheEvictor; private static HttpDataSource.Factory httpDataSourceFactory; private static DataSource.Factory dataSourceFactory; private static ExtractorsFactory extractorsFactory; - private static NoOpCacheEvictor noOpCacheEvictor; private static DatabaseProvider database; - private static CacheEvictor evictor; private static Cache cache; public static LoadControl buildLoadControl() { @@ -126,7 +120,6 @@ public class ExoUtil { Uri uri = Uri.parse(Util.fixUrl(url)); String mimeType = getMimeType(format, errorCode); if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, Util.basic(uri)); - checkEvictor(androidx.media3.common.util.Util.inferContentType(uri) == C.CONTENT_TYPE_OTHER && !MimeTypes.APPLICATION_M3U8.equals(mimeType)); return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm)); } @@ -171,14 +164,6 @@ public class ExoUtil { player.setTrackSelectionParameters(player.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(player.getCurrentTracks().getGroups().get(group).getMediaTrackGroup(), trackIndices)).build()); } - private static void checkEvictor(boolean cache) { - if (noOpCacheEvictor == null) noOpCacheEvictor = new NoOpCacheEvictor(); - if (usedCacheEvictor == null) usedCacheEvictor = new LeastRecentlyUsedCacheEvictor(256 * 1024 * 1024); - CacheEvictor evictor = cache ? usedCacheEvictor : noOpCacheEvictor; - if (!evictor.equals(ExoUtil.evictor)) reset(); - ExoUtil.evictor = evictor; - } - private static synchronized ExtractorsFactory getExtractorsFactory() { if (extractorsFactory == null) extractorsFactory = new DefaultExtractorsFactory().setTsExtractorFlags(DefaultTsPayloadReaderFactory.FLAG_ENABLE_HDMV_DTS_AUDIO_STREAMS).setTsExtractorTimestampSearchBytes(TsExtractor.DEFAULT_TIMESTAMP_SEARCH_BYTES * 3); return extractorsFactory; @@ -205,7 +190,7 @@ public class ExoUtil { } private static synchronized Cache getCache() { - if (cache == null) cache = new SimpleCache(Path.exo(), evictor, getDatabase()); + if (cache == null) cache = new SimpleCache(Path.exo(), new NoOpCacheEvictor(), getDatabase()); return cache; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index c3415cbed..65c2d6496 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -518,6 +518,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo SpannableString span = new SpannableString(text); for (String s : map.keySet()) { int index = text.indexOf(s); + if (index == -1) continue; span.setSpan(getClickableSpan(map.get(s)), index, index + s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return span;