diff --git a/javadoc_combined.gradle b/javadoc_combined.gradle index aea65d4d97..209ad3a1a3 100644 --- a/javadoc_combined.gradle +++ b/javadoc_combined.gradle @@ -39,7 +39,7 @@ class CombinedJavadocPlugin implements Plugin { libraryModules.each { libraryModule -> libraryModule.android.libraryVariants.all { variant -> def name = variant.buildType.name - if (name.equals("release")) { + if (name == "release") { classpath += libraryModule.project.files( variant.javaCompile.classpath.files, @@ -63,7 +63,7 @@ class CombinedJavadocPlugin implements Plugin { } // Returns Android library modules that declare a generateJavadoc task. - private Set getLibraryModules(Project project) { + private static Set getLibraryModules(Project project) { project.subprojects.findAll { it.plugins.findPlugin("com.android.library") && it.tasks.findByName("generateJavadoc") diff --git a/library/core/src/main/java/com/google/android/exoplayer2/C.java b/library/core/src/main/java/com/google/android/exoplayer2/C.java index 6930975fca..096145b115 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/C.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/C.java @@ -418,6 +418,7 @@ public final class C { /** Indicates that a buffer is (at least partially) encrypted. */ public static final int BUFFER_FLAG_ENCRYPTED = 1 << 30; // 0x40000000 /** Indicates that a buffer should be decoded but not rendered. */ + @SuppressWarnings("NumericOverflow") public static final int BUFFER_FLAG_DECODE_ONLY = 1 << 31; // 0x80000000 /** diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Player.java b/library/core/src/main/java/com/google/android/exoplayer2/Player.java index 4711933f17..fddd4f1dea 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/Player.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/Player.java @@ -424,12 +424,10 @@ public interface Player { */ int STATE_ENDED = 4; - /** - * Repeat modes for playback. - */ + /** Repeat modes for playback. */ @Retention(RetentionPolicy.SOURCE) @IntDef({REPEAT_MODE_OFF, REPEAT_MODE_ONE, REPEAT_MODE_ALL}) - public @interface RepeatMode {} + @interface RepeatMode {} /** * Normal playback without repetition. */ @@ -452,7 +450,7 @@ public interface Player { DISCONTINUITY_REASON_AD_INSERTION, DISCONTINUITY_REASON_INTERNAL }) - public @interface DiscontinuityReason {} + @interface DiscontinuityReason {} /** * Automatic playback transition from one period in the timeline to the next. The period index may * be the same as it was before the discontinuity in case the current period is repeated. @@ -470,13 +468,14 @@ public interface Player { /** Discontinuity introduced internally by the source. */ int DISCONTINUITY_REASON_INTERNAL = 4; - /** - * Reasons for timeline and/or manifest changes. - */ + /** Reasons for timeline and/or manifest changes. */ @Retention(RetentionPolicy.SOURCE) - @IntDef({TIMELINE_CHANGE_REASON_PREPARED, TIMELINE_CHANGE_REASON_RESET, - TIMELINE_CHANGE_REASON_DYNAMIC}) - public @interface TimelineChangeReason {} + @IntDef({ + TIMELINE_CHANGE_REASON_PREPARED, + TIMELINE_CHANGE_REASON_RESET, + TIMELINE_CHANGE_REASON_DYNAMIC + }) + @interface TimelineChangeReason {} /** * Timeline and manifest changed as a result of a player initialization with new media. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/PlayerMessage.java b/library/core/src/main/java/com/google/android/exoplayer2/PlayerMessage.java index 2c7aee834e..fb7145aad8 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/PlayerMessage.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/PlayerMessage.java @@ -231,7 +231,7 @@ public final class PlayerMessage { * Player.EventListener#onPlayerError(ExoPlaybackException)}. * * @return This message. - * @throws IllegalStateException If {@link #send()} has already been called. + * @throws IllegalStateException If this message has already been sent. */ public PlayerMessage send() { Assertions.checkState(!isSent); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java b/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java index c29017856f..c1c640ca00 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java @@ -202,7 +202,7 @@ public interface Renderer extends PlayerMessage.Target { * @param operatingRate The operating rate. * @throws ExoPlaybackException If an error occurs handling the operating rate. */ - default void setOperatingRate(float operatingRate) throws ExoPlaybackException {}; + default void setOperatingRate(float operatingRate) throws ExoPlaybackException {} /** * Incrementally renders the {@link SampleStream}. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java index a3ae1d8b71..3d3b6b5b3c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java @@ -39,12 +39,10 @@ public interface DrmSession { } - /** - * The state of the DRM session. - */ + /** The state of the DRM session. */ @Retention(RetentionPolicy.SOURCE) @IntDef({STATE_RELEASED, STATE_ERROR, STATE_OPENING, STATE_OPENED, STATE_OPENED_WITH_KEYS}) - public @interface State {} + @interface State {} /** * The session has been released. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsReader.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsReader.java index 7f6a22b58b..0c59606ded 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsReader.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsReader.java @@ -81,7 +81,6 @@ public final class AdtsReader implements ElementaryStreamReader { private int firstFrameSampleRateIndex; private int currentFrameVersion; - private int currentFrameSampleRateIndex; // Used when parsing the header. private boolean hasOutputFormat; @@ -327,7 +326,7 @@ public final class AdtsReader implements ElementaryStreamReader { adtsScratch.data[0] = buffer.data[buffer.getPosition()]; adtsScratch.setPosition(2); - currentFrameSampleRateIndex = adtsScratch.readBits(4); + int currentFrameSampleRateIndex = adtsScratch.readBits(4); if (firstFrameSampleRateIndex != C.INDEX_UNSET && currentFrameSampleRateIndex != firstFrameSampleRateIndex) { // Invalid header. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/text/tx3g/Tx3gDecoder.java b/library/core/src/main/java/com/google/android/exoplayer2/text/tx3g/Tx3gDecoder.java index ebc38bcd70..9211dc51ce 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/text/tx3g/Tx3gDecoder.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/text/tx3g/Tx3gDecoder.java @@ -56,8 +56,8 @@ public final class Tx3gDecoder extends SimpleSubtitleDecoder { private static final int FONT_FACE_ITALIC = 0x0002; private static final int FONT_FACE_UNDERLINE = 0x0004; - private static final int SPAN_PRIORITY_LOW = (0xFF << Spanned.SPAN_PRIORITY_SHIFT); - private static final int SPAN_PRIORITY_HIGH = (0x00 << Spanned.SPAN_PRIORITY_SHIFT); + private static final int SPAN_PRIORITY_LOW = 0xFF << Spanned.SPAN_PRIORITY_SHIFT; + private static final int SPAN_PRIORITY_HIGH = 0; private static final int DEFAULT_FONT_FACE = 0; private static final int DEFAULT_COLOR = Color.WHITE; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java index 14113479b9..55f61705aa 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java @@ -191,7 +191,7 @@ public final class SimpleCache implements Cache { Assertions.checkState(!released); CachedContent cachedContent = index.get(key); return cachedContent == null || cachedContent.isEmpty() - ? new TreeSet() + ? new TreeSet<>() : new TreeSet(cachedContent.getSpans()); } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessorTest.java index 04de9a76f4..bd559218c6 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessorTest.java @@ -401,8 +401,8 @@ public final class SilenceSkippingAudioProcessorTest { public void appendFrames(int count, short... channelLevels) { Assertions.checkState(!built); for (int i = 0; i < count; i += channelCount) { - for (int j = 0; j < channelLevels.length; j++) { - buffer.put(channelLevels[j]); + for (short channelLevel : channelLevels) { + buffer.put(channelLevel); } } } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/source/MergingMediaSourceTest.java b/library/core/src/test/java/com/google/android/exoplayer2/source/MergingMediaSourceTest.java index e74347d2f4..3318f5a42f 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/source/MergingMediaSourceTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/source/MergingMediaSourceTest.java @@ -95,15 +95,15 @@ public class MergingMediaSourceTest { for (int i = 0; i < timelines.length; i++) { mediaSources[i] = new FakeMediaSource(timelines[i], null); } - MergingMediaSource mediaSource = new MergingMediaSource(mediaSources); - MediaSourceTestRunner testRunner = new MediaSourceTestRunner(mediaSource, null); + MergingMediaSource mergingMediaSource = new MergingMediaSource(mediaSources); + MediaSourceTestRunner testRunner = new MediaSourceTestRunner(mergingMediaSource, null); try { Timeline timeline = testRunner.prepareSource(); // The merged timeline should always be the one from the first child. assertThat(timeline).isEqualTo(timelines[0]); testRunner.releaseSource(); - for (int i = 0; i < mediaSources.length; i++) { - mediaSources[i].assertReleased(); + for (FakeMediaSource mediaSource : mediaSources) { + mediaSource.assertReleased(); } } finally { testRunner.release(); diff --git a/library/core/src/test/java/com/google/android/exoplayer2/upstream/cache/CachedRegionTrackerTest.java b/library/core/src/test/java/com/google/android/exoplayer2/upstream/cache/CachedRegionTrackerTest.java index 50f9cd2ae8..f8da2b1085 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/upstream/cache/CachedRegionTrackerTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/upstream/cache/CachedRegionTrackerTest.java @@ -61,8 +61,7 @@ public final class CachedRegionTrackerTest { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - when(cache.addListener(anyString(), any(Cache.Listener.class))) - .thenReturn(new TreeSet()); + when(cache.addListener(anyString(), any(Cache.Listener.class))).thenReturn(new TreeSet<>()); tracker = new CachedRegionTracker(cache, CACHE_KEY, CHUNK_INDEX); cacheDir = Util.createTempDirectory(RuntimeEnvironment.application, "ExoPlayerTest"); index = new CachedContentIndex(cacheDir); diff --git a/library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/HlsDownloaderTest.java b/library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/HlsDownloaderTest.java index acc5236311..b5ecad5b36 100644 --- a/library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/HlsDownloaderTest.java +++ b/library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/HlsDownloaderTest.java @@ -191,8 +191,7 @@ public class HlsDownloaderTest { private static ArrayList getKeys(int... variantIndices) { ArrayList streamKeys = new ArrayList<>(); for (int variantIndex : variantIndices) { - final int trackIndex = variantIndex; - streamKeys.add(new StreamKey(HlsMasterPlaylist.GROUP_INDEX_VARIANT, trackIndex)); + streamKeys.add(new StreamKey(HlsMasterPlaylist.GROUP_INDEX_VARIANT, variantIndex)); } return streamKeys; } diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java index c2437db189..36eb6665f3 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java @@ -213,7 +213,7 @@ public class SsManifestParser implements ParsingLoadable.Parser { /** * @param xmlParser The underlying {@link XmlPullParser} - * @throws ParserException + * @throws ParserException If a parsing error occurs. */ protected void parseStartTag(XmlPullParser xmlParser) throws ParserException { // Do nothing. diff --git a/library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestTest.java b/library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestTest.java index 05f2582f0d..dc8d6754f5 100644 --- a/library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestTest.java +++ b/library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestTest.java @@ -64,9 +64,7 @@ public class SsManifestTest { SsManifest sourceManifest = newSsManifest(newStreamElement("1", formats[0]), newStreamElement("2", formats[1])); - List keys = Arrays.asList(new StreamKey(1, 0)); - // Keys don't need to be in any particular order - Collections.shuffle(keys, new Random(0)); + List keys = Collections.singletonList(new StreamKey(1, 0)); SsManifest copyManifest = sourceManifest.copy(keys); diff --git a/library/ui/src/main/res/layout/exo_playback_control_view.xml b/library/ui/src/main/res/layout/exo_playback_control_view.xml index 159844c234..534655f2f4 100644 --- a/library/ui/src/main/res/layout/exo_playback_control_view.xml +++ b/library/ui/src/main/res/layout/exo_playback_control_view.xml @@ -14,12 +14,14 @@ limitations under the License. --> + android:orientation="vertical" + tools:targetApi="28"> getStateQueue(DownloadAction action) { synchronized (actionStates) { if (!actionStates.containsKey(action)) { - actionStates.put(action, new ArrayBlockingQueue(10)); + actionStates.put(action, new ArrayBlockingQueue<>(10)); } return actionStates.get(action); }