From 205c8734cc3aed063f41b8acb81bb95f11b0a239 Mon Sep 17 00:00:00 2001 From: Ian Baker Date: Thu, 8 Feb 2024 18:12:08 +0000 Subject: [PATCH] In-line more V19 methods in TrackSelectionParameters, AudioTimestampPoller and CaptionStyleCompat --- .../common/TrackSelectionParameters.java | 35 ++++++++----------- .../exoplayer/audio/AudioTimestampPoller.java | 1 + .../media3/ui/CaptionStyleCompat.java | 23 +++++------- 3 files changed, 24 insertions(+), 35 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java b/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java index 5339f64c61..d61b760ec3 100644 --- a/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java +++ b/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java @@ -630,7 +630,21 @@ public class TrackSelectionParameters implements Bundleable { @CanIgnoreReturnValue public Builder setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings( Context context) { - setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettingsV19(context); + if (Util.SDK_INT < 23 && Looper.myLooper() == null) { + // Android platform bug (pre-Marshmallow) that causes RuntimeExceptions when + // CaptioningService is instantiated from a non-Looper thread. See [internal: b/143779904]. + return this; + } + CaptioningManager captioningManager = + (CaptioningManager) context.getSystemService(Context.CAPTIONING_SERVICE); + if (captioningManager == null || !captioningManager.isEnabled()) { + return this; + } + preferredTextRoleFlags = C.ROLE_FLAG_CAPTION | C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND; + Locale preferredLocale = captioningManager.getLocale(); + if (preferredLocale != null) { + preferredTextLanguages = ImmutableList.of(Util.getLocaleLanguageTag(preferredLocale)); + } return this; } @@ -829,25 +843,6 @@ public class TrackSelectionParameters implements Bundleable { return new TrackSelectionParameters(this); } - private void setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettingsV19( - Context context) { - if (Util.SDK_INT < 23 && Looper.myLooper() == null) { - // Android platform bug (pre-Marshmallow) that causes RuntimeExceptions when - // CaptioningService is instantiated from a non-Looper thread. See [internal: b/143779904]. - return; - } - CaptioningManager captioningManager = - (CaptioningManager) context.getSystemService(Context.CAPTIONING_SERVICE); - if (captioningManager == null || !captioningManager.isEnabled()) { - return; - } - preferredTextRoleFlags = C.ROLE_FLAG_CAPTION | C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND; - Locale preferredLocale = captioningManager.getLocale(); - if (preferredLocale != null) { - preferredTextLanguages = ImmutableList.of(Util.getLocaleLanguageTag(preferredLocale)); - } - } - private static ImmutableList normalizeLanguageCodes(String[] preferredTextLanguages) { ImmutableList.Builder listBuilder = ImmutableList.builder(); for (String language : checkNotNull(preferredTextLanguages)) { diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTimestampPoller.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTimestampPoller.java index 876e0ed988..aba711b7e8 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTimestampPoller.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTimestampPoller.java @@ -261,6 +261,7 @@ import java.lang.annotation.Target; } } + // DO NOT SUBMIT in-line this private static final class AudioTimestampV19 { private final AudioTrack audioTrack; diff --git a/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java b/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java index a24e22cdcd..04ab0e6647 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java @@ -114,14 +114,19 @@ public final class CaptionStyleCompat { * @param captionStyle A {@link CaptionStyle}. * @return The equivalent {@link CaptionStyleCompat}. */ + @SuppressWarnings("ResourceType") // DO NOT SUBMIT check this is still needed public static CaptionStyleCompat createFromCaptionStyle( CaptioningManager.CaptionStyle captionStyle) { if (Util.SDK_INT >= 21) { return createFromCaptionStyleV21(captionStyle); } else { - // Note - Any caller must be on at least API level 19 or greater (because CaptionStyle did - // not exist in earlier API levels). - return createFromCaptionStyleV19(captionStyle); + return new CaptionStyleCompat( + captionStyle.foregroundColor, + captionStyle.backgroundColor, + Color.TRANSPARENT, + captionStyle.edgeType, + captionStyle.edgeColor, + captionStyle.getTypeface()); } } @@ -148,18 +153,6 @@ public final class CaptionStyleCompat { this.typeface = typeface; } - @SuppressWarnings("ResourceType") - private static CaptionStyleCompat createFromCaptionStyleV19( - CaptioningManager.CaptionStyle captionStyle) { - return new CaptionStyleCompat( - captionStyle.foregroundColor, - captionStyle.backgroundColor, - Color.TRANSPARENT, - captionStyle.edgeType, - captionStyle.edgeColor, - captionStyle.getTypeface()); - } - @RequiresApi(21) @SuppressWarnings("ResourceType") private static CaptionStyleCompat createFromCaptionStyleV21(