diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5894e991d0..6afe9bda35 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,6 +2,7 @@ ### dev-v2 (not yet released) ### +* Increase `minSdkVersion` to 16 (Jellybean). * Support for playing spherical videos on Daydream. * Improve decoder re-use between playbacks. TODO: Write and link a blog post here ([#2826](https://github.com/google/ExoPlayer/issues/2826)). diff --git a/constants.gradle b/constants.gradle index 716ddbadba..062438fa30 100644 --- a/constants.gradle +++ b/constants.gradle @@ -15,11 +15,7 @@ project.ext { // ExoPlayer version and version code. releaseVersion = '2.9.4' releaseVersionCode = 2009004 - // Important: ExoPlayer specifies a minSdkVersion of 14 because various - // components provided by the library may be of use on older devices. - // However, please note that the core media playback functionality provided - // by the library requires API level 16 or greater. - minSdkVersion = 14 + minSdkVersion = 16 targetSdkVersion = 28 compileSdkVersion = 28 buildToolsVersion = '28.0.2' diff --git a/demos/cast/build.gradle b/demos/cast/build.gradle index 8af52a787e..e056530d45 100644 --- a/demos/cast/build.gradle +++ b/demos/cast/build.gradle @@ -26,7 +26,7 @@ android { defaultConfig { versionName project.ext.releaseVersion versionCode project.ext.releaseVersionCode - minSdkVersion 16 + minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion } diff --git a/demos/ima/build.gradle b/demos/ima/build.gradle index 33cca6ef46..0530c42eb7 100644 --- a/demos/ima/build.gradle +++ b/demos/ima/build.gradle @@ -26,7 +26,7 @@ android { defaultConfig { versionName project.ext.releaseVersion versionCode project.ext.releaseVersionCode - minSdkVersion 16 + minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion } diff --git a/demos/main/build.gradle b/demos/main/build.gradle index c516ba297f..e3e382f6d0 100644 --- a/demos/main/build.gradle +++ b/demos/main/build.gradle @@ -26,7 +26,7 @@ android { defaultConfig { versionName project.ext.releaseVersion versionCode project.ext.releaseVersionCode - minSdkVersion 16 + minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion } diff --git a/extensions/cast/build.gradle b/extensions/cast/build.gradle index 0baa074d4a..fea8363960 100644 --- a/extensions/cast/build.gradle +++ b/extensions/cast/build.gradle @@ -24,7 +24,7 @@ android { } defaultConfig { - minSdkVersion 14 + minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion consumerProguardFiles 'proguard-rules.txt' } diff --git a/extensions/cronet/build.gradle b/extensions/cronet/build.gradle index 7d8c217b58..f77e84c816 100644 --- a/extensions/cronet/build.gradle +++ b/extensions/cronet/build.gradle @@ -19,7 +19,7 @@ android { buildToolsVersion project.ext.buildToolsVersion defaultConfig { - minSdkVersion 16 + minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion } diff --git a/extensions/rtmp/build.gradle b/extensions/rtmp/build.gradle index af02ee2eaa..4869df7a1a 100644 --- a/extensions/rtmp/build.gradle +++ b/extensions/rtmp/build.gradle @@ -24,7 +24,7 @@ android { } defaultConfig { - minSdkVersion 15 + minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index e498038fde..35924a01fb 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -63,7 +63,6 @@ import java.util.concurrent.CopyOnWriteArraySet; * An {@link ExoPlayer} implementation that uses default {@link Renderer} components. Instances can * be obtained from {@link ExoPlayerFactory}. */ -@TargetApi(16) public class SimpleExoPlayer extends BasePlayer implements ExoPlayer, Player.AudioComponent, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java index 7fc6c16db8..04c6b2ec9c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java @@ -16,7 +16,6 @@ package com.google.android.exoplayer2.audio; import android.annotation.SuppressLint; -import android.annotation.TargetApi; import android.content.Context; import android.media.MediaCodec; import android.media.MediaCrypto; @@ -66,7 +65,6 @@ import java.util.List; * underlying audio track. * */ -@TargetApi(16) public class MediaCodecAudioRenderer extends MediaCodecRenderer implements MediaClock { /** diff --git a/library/core/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java index ec17de8d74..379ca971b5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/decoder/CryptoInfo.java @@ -62,7 +62,7 @@ public final class CryptoInfo { private final PatternHolderV24 patternHolder; public CryptoInfo() { - frameworkCryptoInfo = Util.SDK_INT >= 16 ? newFrameworkCryptoInfoV16() : null; + frameworkCryptoInfo = new android.media.MediaCodec.CryptoInfo(); patternHolder = Util.SDK_INT >= 24 ? new PatternHolderV24(frameworkCryptoInfo) : null; } @@ -79,34 +79,8 @@ public final class CryptoInfo { this.mode = mode; this.encryptedBlocks = encryptedBlocks; this.clearBlocks = clearBlocks; - if (Util.SDK_INT >= 16) { - updateFrameworkCryptoInfoV16(); - } - } - - /** - * Returns an equivalent {@link android.media.MediaCodec.CryptoInfo} instance. - *

- * Successive calls to this method on a single {@link CryptoInfo} will return the same instance. - * Changes to the {@link CryptoInfo} will be reflected in the returned object. The return object - * should not be modified directly. - * - * @return The equivalent {@link android.media.MediaCodec.CryptoInfo} instance. - */ - @TargetApi(16) - public android.media.MediaCodec.CryptoInfo getFrameworkCryptoInfoV16() { - return frameworkCryptoInfo; - } - - @TargetApi(16) - private android.media.MediaCodec.CryptoInfo newFrameworkCryptoInfoV16() { - return new android.media.MediaCodec.CryptoInfo(); - } - - @TargetApi(16) - private void updateFrameworkCryptoInfoV16() { - // Update fields directly because the framework's CryptoInfo.set performs an unnecessary object - // allocation on Android N. + // Update frameworkCryptoInfo fields directly because CryptoInfo.set performs an unnecessary + // object allocation on Android N. frameworkCryptoInfo.numSubSamples = numSubSamples; frameworkCryptoInfo.numBytesOfClearData = numBytesOfClearData; frameworkCryptoInfo.numBytesOfEncryptedData = numBytesOfEncryptedData; @@ -118,6 +92,25 @@ public final class CryptoInfo { } } + /** + * Returns an equivalent {@link android.media.MediaCodec.CryptoInfo} instance. + * + *

Successive calls to this method on a single {@link CryptoInfo} will return the same + * instance. Changes to the {@link CryptoInfo} will be reflected in the returned object. The + * return object should not be modified directly. + * + * @return The equivalent {@link android.media.MediaCodec.CryptoInfo} instance. + */ + public android.media.MediaCodec.CryptoInfo getFrameworkCryptoInfo() { + return frameworkCryptoInfo; + } + + /** @deprecated Use {@link #getFrameworkCryptoInfo()}. */ + @Deprecated + public android.media.MediaCodec.CryptoInfo getFrameworkCryptoInfoV16() { + return getFrameworkCryptoInfo(); + } + @TargetApi(24) private static final class PatternHolderV24 { 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 a68415287e..a23f26f067 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 @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.drm; -import android.annotation.TargetApi; import android.media.MediaDrm; import android.support.annotation.IntDef; import android.support.annotation.Nullable; @@ -27,7 +26,6 @@ import java.util.Map; /** * A DRM session. */ -@TargetApi(16) public interface DrmSession { /** diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java index cf3d97d0b2..d8093507a4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java @@ -15,14 +15,12 @@ */ package com.google.android.exoplayer2.drm; -import android.annotation.TargetApi; import android.os.Looper; import com.google.android.exoplayer2.drm.DrmInitData.SchemeData; /** * Manages a DRM session. */ -@TargetApi(16) public interface DrmSessionManager { /** diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaCrypto.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaCrypto.java index 156138ab9b..7211b5fcde 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaCrypto.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaCrypto.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.drm; -import android.annotation.TargetApi; import android.media.MediaCrypto; import java.util.UUID; @@ -23,7 +22,6 @@ import java.util.UUID; * An {@link ExoMediaCrypto} implementation that contains the necessary information to build or * update a framework {@link MediaCrypto}. */ -@TargetApi(16) public final class FrameworkMediaCrypto implements ExoMediaCrypto { /** The DRM scheme UUID. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java index 107ab9efd8..c9493e1208 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java @@ -31,7 +31,6 @@ import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.Util; /** Information about a {@link MediaCodec} for a given mime type. */ -@TargetApi(16) @SuppressWarnings("InlinedApi") public final class MediaCodecInfo { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java index 35f5c14f3f..e3fcf9397b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java @@ -58,7 +58,6 @@ import java.util.List; /** * An abstract renderer that uses {@link MediaCodec} to decode samples for rendering. */ -@TargetApi(16) public abstract class MediaCodecRenderer extends BaseRenderer { /** @@ -366,7 +365,6 @@ public abstract class MediaCodecRenderer extends BaseRenderer { boolean playClearSamplesWithoutKeys, float assumedMinimumCodecOperatingRate) { super(trackType); - Assertions.checkState(Util.SDK_INT >= 16); this.mediaCodecSelector = Assertions.checkNotNull(mediaCodecSelector); this.drmSessionManager = drmSessionManager; this.playClearSamplesWithoutKeys = playClearSamplesWithoutKeys; @@ -1662,7 +1660,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer { private static MediaCodec.CryptoInfo getFrameworkCryptoInfo( DecoderInputBuffer buffer, int adaptiveReconfigurationBytes) { - MediaCodec.CryptoInfo cryptoInfo = buffer.cryptoInfo.getFrameworkCryptoInfoV16(); + MediaCodec.CryptoInfo cryptoInfo = buffer.cryptoInfo.getFrameworkCryptoInfo(); if (adaptiveReconfigurationBytes == 0) { return cryptoInfo; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java index 9ae50179c3..ae3a9f123f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java @@ -39,7 +39,6 @@ import java.util.regex.Pattern; /** * A utility class for querying the available codecs. */ -@TargetApi(16) @SuppressLint("InlinedApi") public final class MediaCodecUtil { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaFormatUtil.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaFormatUtil.java index 3cfefc0736..95cc5d4a37 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaFormatUtil.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaFormatUtil.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.mediacodec; -import android.annotation.TargetApi; import android.media.MediaFormat; import android.support.annotation.Nullable; import com.google.android.exoplayer2.Format; @@ -24,7 +23,6 @@ import java.nio.ByteBuffer; import java.util.List; /** Helper class for configuring {@link MediaFormat} instances. */ -@TargetApi(16) public final class MediaFormatUtil { private MediaFormatUtil() {} diff --git a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/Requirements.java b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/Requirements.java index 77630a4543..508c3393c5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/Requirements.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/Requirements.java @@ -200,7 +200,7 @@ public final class Requirements { logd("Roaming: " + roaming); return !roaming; } - boolean activeNetworkMetered = isActiveNetworkMetered(connectivityManager, networkInfo); + boolean activeNetworkMetered = connectivityManager.isActiveNetworkMetered(); logd("Metered network: " + activeNetworkMetered); if (networkRequirement == NETWORK_TYPE_UNMETERED) { return !activeNetworkMetered; @@ -255,17 +255,6 @@ public final class Requirements { return !validated; } - private static boolean isActiveNetworkMetered( - ConnectivityManager connectivityManager, NetworkInfo networkInfo) { - if (Util.SDK_INT >= 16) { - return connectivityManager.isActiveNetworkMetered(); - } - int type = networkInfo.getType(); - return type != ConnectivityManager.TYPE_WIFI - && type != ConnectivityManager.TYPE_BLUETOOTH - && type != ConnectivityManager.TYPE_ETHERNET; - } - private static void logd(String message) { if (Scheduler.DEBUG) { Log.d(TAG, message); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/GlUtil.java b/library/core/src/main/java/com/google/android/exoplayer2/util/GlUtil.java index 9387392ec4..915e855d23 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/GlUtil.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/GlUtil.java @@ -17,7 +17,6 @@ package com.google.android.exoplayer2.util; import static android.opengl.GLU.gluErrorString; -import android.annotation.TargetApi; import android.opengl.GLES11Ext; import android.opengl.GLES20; import android.text.TextUtils; @@ -114,7 +113,6 @@ public final class GlUtil { * Creates a GL_TEXTURE_EXTERNAL_OES with default configuration of GL_LINEAR filtering and * GL_CLAMP_TO_EDGE wrapping. */ - @TargetApi(15) public static int createExternalTexture() { int[] texId = new int[1]; GLES20.glGenTextures(1, IntBuffer.wrap(texId)); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java b/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java index 1e1153d367..34237dddf6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java @@ -1844,10 +1844,8 @@ public final class Util { getDisplaySizeV23(display, displaySize); } else if (Util.SDK_INT >= 17) { getDisplaySizeV17(display, displaySize); - } else if (Util.SDK_INT >= 16) { - getDisplaySizeV16(display, displaySize); } else { - getDisplaySizeV9(display, displaySize); + getDisplaySizeV16(display, displaySize); } return displaySize; } @@ -1903,17 +1901,10 @@ public final class Util { display.getRealSize(outSize); } - @TargetApi(16) private static void getDisplaySizeV16(Display display, Point outSize) { display.getSize(outSize); } - @SuppressWarnings("deprecation") - private static void getDisplaySizeV9(Display display, Point outSize) { - outSize.x = display.getWidth(); - outSize.y = display.getHeight(); - } - private static @C.NetworkType int getMobileNetworkType(NetworkInfo networkInfo) { switch (networkInfo.getSubtype()) { case TelephonyManager.NETWORK_TYPE_EDGE: diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index 6943fea7b6..d8ad2a840b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -68,7 +68,6 @@ import java.util.List; * a {@link android.view.SurfaceView}. * */ -@TargetApi(16) public class MediaCodecVideoRenderer extends MediaCodecRenderer { private static final String TAG = "MediaCodecVideoRenderer"; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper.java b/library/core/src/main/java/com/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper.java index 3c0fb92191..c7e34d00e9 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/VideoFrameReleaseTimeHelper.java @@ -32,7 +32,6 @@ import com.google.android.exoplayer2.util.Util; /** * Makes a best effort to adjust frame release timestamps for a smoother visual result. */ -@TargetApi(16) public final class VideoFrameReleaseTimeHelper { private static final long CHOREOGRAPHER_SAMPLE_DELAY_MILLIS = 500; diff --git a/library/core/src/test/java/com/google/android/exoplayer2/extractor/mp4/Mp4ExtractorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/extractor/mp4/Mp4ExtractorTest.java index 8850a755be..3c84214686 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/extractor/mp4/Mp4ExtractorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/extractor/mp4/Mp4ExtractorTest.java @@ -15,14 +15,12 @@ */ package com.google.android.exoplayer2.extractor.mp4; -import android.annotation.TargetApi; import com.google.android.exoplayer2.testutil.ExtractorAsserts; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; /** Tests for {@link Mp4Extractor}. */ -@TargetApi(16) @RunWith(RobolectricTestRunner.class) public final class Mp4ExtractorTest { diff --git a/library/core/src/test/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractorTest.java index 62ad774fd3..9551c9df29 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractorTest.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.extractor.rawcc; -import android.annotation.TargetApi; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.testutil.ExtractorAsserts; import com.google.android.exoplayer2.util.MimeTypes; @@ -24,7 +23,6 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; /** Tests for {@link RawCcExtractor}. */ -@TargetApi(16) @RunWith(RobolectricTestRunner.class) public final class RawCcExtractorTest { diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java index 75c4f71b64..0c3d39a13a 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java @@ -319,8 +319,8 @@ public class DefaultTimeBar extends View implements TimeBar { keyTimeIncrement = C.TIME_UNSET; keyCountIncrement = DEFAULT_INCREMENT_COUNT; setFocusable(true); - if (Util.SDK_INT >= 16) { - maybeSetImportantForAccessibilityV16(); + if (getImportantForAccessibility() == View.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { + setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); } } @@ -611,13 +611,12 @@ public class DefaultTimeBar extends View implements TimeBar { if (Util.SDK_INT >= 21) { info.addAction(AccessibilityAction.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityAction.ACTION_SCROLL_BACKWARD); - } else if (Util.SDK_INT >= 16) { + } else { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } - @TargetApi(16) @Override public boolean performAccessibilityAction(int action, @Nullable Bundle args) { if (super.performAccessibilityAction(action, args)) { @@ -643,13 +642,6 @@ public class DefaultTimeBar extends View implements TimeBar { // Internal methods. - @TargetApi(16) - private void maybeSetImportantForAccessibilityV16() { - if (getImportantForAccessibility() == View.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { - setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); - } - } - private void startScrubbing() { scrubbing = true; setPressed(true); diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SimpleExoPlayerView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SimpleExoPlayerView.java index 55745a7cb5..b01e7a308c 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SimpleExoPlayerView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SimpleExoPlayerView.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.ui; -import android.annotation.TargetApi; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -25,7 +24,6 @@ import com.google.android.exoplayer2.SimpleExoPlayer; /** @deprecated Use {@link PlayerView}. */ @Deprecated -@TargetApi(16) public final class SimpleExoPlayerView extends PlayerView { public SimpleExoPlayerView(Context context) { diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/CanvasRenderer.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/CanvasRenderer.java index 5538390d3b..955418acf7 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/CanvasRenderer.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/CanvasRenderer.java @@ -18,7 +18,6 @@ package com.google.android.exoplayer2.ui.spherical; import static com.google.android.exoplayer2.util.GlUtil.checkGlError; -import android.annotation.TargetApi; import android.graphics.Canvas; import android.graphics.PointF; import android.graphics.Rect; @@ -39,7 +38,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; *

A CanvasRenderer can be created on any thread, but {@link #init()} needs to be called on the * GL thread before it can be rendered. */ -@TargetApi(15) public final class CanvasRenderer { private static final float WIDTH_UNIT = 0.8f; diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/ProjectionRenderer.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/ProjectionRenderer.java index 5e8a6d71d2..f24bcce3ce 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/ProjectionRenderer.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/ProjectionRenderer.java @@ -17,7 +17,6 @@ package com.google.android.exoplayer2.ui.spherical; import static com.google.android.exoplayer2.util.GlUtil.checkGlError; -import android.annotation.TargetApi; import android.opengl.GLES11Ext; import android.opengl.GLES20; import com.google.android.exoplayer2.C; @@ -30,7 +29,6 @@ import org.checkerframework.checker.nullness.qual.Nullable; * Utility class to render spherical meshes for video or images. Call {@link #init()} on the GL * thread when ready. */ -@TargetApi(15) /* package */ final class ProjectionRenderer { /** diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/SphericalSurfaceView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/SphericalSurfaceView.java index 36589c5e34..adbeb7773d 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/SphericalSurfaceView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/SphericalSurfaceView.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.ui.spherical; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.PointF; import android.graphics.SurfaceTexture; @@ -52,7 +51,6 @@ import javax.microedition.khronos.opengles.GL10; * apply the touch and sensor rotations in the correct order or the user's touch manipulations won't * match what they expect. */ -@TargetApi(15) public final class SphericalSurfaceView extends GLSurfaceView { /** diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashDownloadTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashDownloadTest.java index 0dd05e7fd3..7d000de4b0 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashDownloadTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashDownloadTest.java @@ -89,10 +89,6 @@ public final class DashDownloadTest { @Test public void testDownload() throws Exception { - if (Util.SDK_INT < 16) { - return; // Pass. - } - DashDownloader dashDownloader = downloadContent(); dashDownloader.download(); diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java index 9a54ffd07c..56806183cc 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java @@ -103,10 +103,6 @@ public final class DashStreamingTest { @Test public void testH264Fixed() { - if (Util.SDK_INT < 16) { - // Pass. - return; - } testRunner .setStreamName("test_h264_fixed") .setManifestUrl(DashTestData.H264_MANIFEST) @@ -118,7 +114,7 @@ public final class DashStreamingTest { @Test public void testH264Adaptive() throws DecoderQueryException { - if (Util.SDK_INT < 16 || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { + if (shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { // Pass. return; } @@ -134,7 +130,7 @@ public final class DashStreamingTest { @Test public void testH264AdaptiveWithSeeking() throws DecoderQueryException { - if (Util.SDK_INT < 16 || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { + if (shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { // Pass. return; } @@ -152,7 +148,7 @@ public final class DashStreamingTest { @Test public void testH264AdaptiveWithRendererDisabling() throws DecoderQueryException { - if (Util.SDK_INT < 16 || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { + if (shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { // Pass. return; } @@ -633,10 +629,6 @@ public final class DashStreamingTest { @Test public void testDecoderInfoH264() throws DecoderQueryException { - if (Util.SDK_INT < 16) { - // Pass. - return; - } MediaCodecInfo decoderInfo = MediaCodecUtil.getDecoderInfo(MimeTypes.VIDEO_H264, false); assertThat(decoderInfo).isNotNull(); assertThat(Util.SDK_INT < 21 || decoderInfo.adaptive).isTrue(); diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java index eb69cc88da..2446094136 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java @@ -205,7 +205,6 @@ public final class DashTestRunner { /** * A {@link HostedTest} for DASH playback tests. */ - @TargetApi(16) private static final class DashHostedTest extends ExoHostedTest { private final String streamName; diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java index 39194d48fe..d480d50b98 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/DebugRenderersFactory.java @@ -39,7 +39,6 @@ import java.util.ArrayList; * A debug extension of {@link DefaultRenderersFactory}. Provides a video renderer that performs * video buffer timestamp assertions. */ -@TargetApi(16) public class DebugRenderersFactory extends DefaultRenderersFactory { public DebugRenderersFactory(Context context) {