diff --git a/demos/cast/src/main/java/androidx/media3/demo/cast/MainActivity.java b/demos/cast/src/main/java/androidx/media3/demo/cast/MainActivity.java index 700a11cf74..448b6b4738 100644 --- a/demos/cast/src/main/java/androidx/media3/demo/cast/MainActivity.java +++ b/demos/cast/src/main/java/androidx/media3/demo/cast/MainActivity.java @@ -27,7 +27,6 @@ import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; @@ -199,7 +198,6 @@ public class MainActivity extends AppCompatActivity private class MediaQueueListAdapter extends RecyclerView.Adapter { @Override - @NonNull public QueueItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { TextView v = (TextView) @@ -240,9 +238,7 @@ public class MainActivity extends AppCompatActivity @Override public boolean onMove( - @NonNull RecyclerView list, - RecyclerView.ViewHolder origin, - RecyclerView.ViewHolder target) { + RecyclerView list, RecyclerView.ViewHolder origin, RecyclerView.ViewHolder target) { int fromPosition = origin.getAdapterPosition(); int toPosition = target.getAdapterPosition(); if (draggingFromPosition == C.INDEX_UNSET) { @@ -266,7 +262,7 @@ public class MainActivity extends AppCompatActivity } @Override - public void clearView(@NonNull RecyclerView recyclerView, @NonNull ViewHolder viewHolder) { + public void clearView(RecyclerView recyclerView, ViewHolder viewHolder) { super.clearView(recyclerView, viewHolder); if (draggingFromPosition != C.INDEX_UNSET) { QueueItemViewHolder queueItemHolder = (QueueItemViewHolder) viewHolder; @@ -306,8 +302,7 @@ public class MainActivity extends AppCompatActivity } @Override - @NonNull - public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + public View getView(int position, @Nullable View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); ((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.title); return view; diff --git a/demos/cast/src/main/java/androidx/media3/demo/cast/PlayerManager.java b/demos/cast/src/main/java/androidx/media3/demo/cast/PlayerManager.java index 98508cc87c..6258963db4 100644 --- a/demos/cast/src/main/java/androidx/media3/demo/cast/PlayerManager.java +++ b/demos/cast/src/main/java/androidx/media3/demo/cast/PlayerManager.java @@ -18,7 +18,6 @@ package androidx.media3.demo.cast; import android.content.Context; import android.view.KeyEvent; import android.view.View; -import androidx.annotation.NonNull; import androidx.media3.cast.CastPlayer; import androidx.media3.cast.SessionAvailabilityListener; import androidx.media3.common.C; @@ -226,7 +225,7 @@ import java.util.ArrayList; } @Override - public void onTimelineChanged(@NonNull Timeline timeline, @TimelineChangeReason int reason) { + public void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) { updateCurrentItemIndex(); } diff --git a/demos/gl/src/main/java/androidx/media3/demo/gl/VideoProcessingGLSurfaceView.java b/demos/gl/src/main/java/androidx/media3/demo/gl/VideoProcessingGLSurfaceView.java index cf4b2e1fa9..b1eafe9807 100644 --- a/demos/gl/src/main/java/androidx/media3/demo/gl/VideoProcessingGLSurfaceView.java +++ b/demos/gl/src/main/java/androidx/media3/demo/gl/VideoProcessingGLSurfaceView.java @@ -23,7 +23,6 @@ import android.opengl.GLES20; import android.opengl.GLSurfaceView; import android.os.Handler; import android.view.Surface; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.media3.common.C; import androidx.media3.common.Format; @@ -290,7 +289,7 @@ public final class VideoProcessingGLSurfaceView extends GLSurfaceView { public void onVideoFrameAboutToBeRendered( long presentationTimeUs, long releaseTimeNs, - @NonNull Format format, + Format format, @Nullable MediaFormat mediaFormat) { sampleTimestampQueue.add(releaseTimeNs, presentationTimeUs); } diff --git a/demos/main/src/main/java/androidx/media3/demo/main/DemoDownloadService.java b/demos/main/src/main/java/androidx/media3/demo/main/DemoDownloadService.java index 8cd1896966..21078d8545 100644 --- a/demos/main/src/main/java/androidx/media3/demo/main/DemoDownloadService.java +++ b/demos/main/src/main/java/androidx/media3/demo/main/DemoDownloadService.java @@ -19,7 +19,6 @@ import static androidx.media3.demo.main.DemoUtil.DOWNLOAD_NOTIFICATION_CHANNEL_I import android.app.Notification; import android.content.Context; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.media3.common.util.NotificationUtil; import androidx.media3.common.util.Util; @@ -48,7 +47,6 @@ public class DemoDownloadService extends DownloadService { } @Override - @NonNull protected DownloadManager getDownloadManager() { // This will only happen once, because getDownloadManager is guaranteed to be called only once // in the life cycle of the process. @@ -67,9 +65,8 @@ public class DemoDownloadService extends DownloadService { } @Override - @NonNull protected Notification getForegroundNotification( - @NonNull List downloads, @Requirements.RequirementFlags int notMetRequirements) { + List downloads, @Requirements.RequirementFlags int notMetRequirements) { return DemoUtil.getDownloadNotificationHelper(/* context= */ this) .buildProgressNotification( /* context= */ this, diff --git a/demos/main/src/main/java/androidx/media3/demo/main/DownloadTracker.java b/demos/main/src/main/java/androidx/media3/demo/main/DownloadTracker.java index 1d30b6f117..a27991519c 100644 --- a/demos/main/src/main/java/androidx/media3/demo/main/DownloadTracker.java +++ b/demos/main/src/main/java/androidx/media3/demo/main/DownloadTracker.java @@ -23,7 +23,6 @@ import android.content.DialogInterface; import android.net.Uri; import android.os.AsyncTask; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.fragment.app.FragmentManager; @@ -142,9 +141,7 @@ public class DownloadTracker { @Override public void onDownloadChanged( - @NonNull DownloadManager downloadManager, - @NonNull Download download, - @Nullable Exception finalException) { + DownloadManager downloadManager, Download download, @Nullable Exception finalException) { downloads.put(download.request.uri, download); for (Listener listener : listeners) { listener.onDownloadsChanged(); @@ -152,8 +149,7 @@ public class DownloadTracker { } @Override - public void onDownloadRemoved( - @NonNull DownloadManager downloadManager, @NonNull Download download) { + public void onDownloadRemoved(DownloadManager downloadManager, Download download) { downloads.remove(download.request.uri); for (Listener listener : listeners) { listener.onDownloadsChanged(); @@ -196,7 +192,7 @@ public class DownloadTracker { // DownloadHelper.Callback implementation. @Override - public void onPrepared(@NonNull DownloadHelper helper) { + public void onPrepared(DownloadHelper helper) { @Nullable Format format = getFirstFormatWithDrmInitData(helper); if (format == null) { onDownloadPrepared(helper); @@ -231,7 +227,7 @@ public class DownloadTracker { } @Override - public void onPrepareError(@NonNull DownloadHelper helper, @NonNull IOException e) { + public void onPrepareError(DownloadHelper helper, IOException e) { boolean isLiveContent = e instanceof LiveContentUnsupportedException; int toastStringId = isLiveContent ? R.string.download_live_unsupported : R.string.download_start_error; diff --git a/demos/main/src/main/java/androidx/media3/demo/main/PlayerActivity.java b/demos/main/src/main/java/androidx/media3/demo/main/PlayerActivity.java index f7e5b1914e..3e99c3b252 100644 --- a/demos/main/src/main/java/androidx/media3/demo/main/PlayerActivity.java +++ b/demos/main/src/main/java/androidx/media3/demo/main/PlayerActivity.java @@ -28,7 +28,6 @@ import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.media3.common.AudioAttributes; @@ -185,7 +184,7 @@ public class PlayerActivity extends AppCompatActivity @Override public void onRequestPermissionsResult( - int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults.length == 0) { // Empty results are triggered if a permission is requested while another request was already @@ -201,7 +200,7 @@ public class PlayerActivity extends AppCompatActivity } @Override - public void onSaveInstanceState(@NonNull Bundle outState) { + public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); updateTrackSelectorParameters(); updateStartPosition(); @@ -424,7 +423,7 @@ public class PlayerActivity extends AppCompatActivity } @Override - public void onPlayerError(@NonNull PlaybackException error) { + public void onPlayerError(PlaybackException error) { if (error.errorCode == PlaybackException.ERROR_CODE_BEHIND_LIVE_WINDOW) { player.seekToDefaultPosition(); player.prepare(); @@ -454,8 +453,7 @@ public class PlayerActivity extends AppCompatActivity private class PlayerErrorMessageProvider implements ErrorMessageProvider { @Override - @NonNull - public Pair getErrorMessage(@NonNull PlaybackException e) { + public Pair getErrorMessage(PlaybackException e) { String errorString = getString(R.string.error_generic); Throwable cause = e.getCause(); if (cause instanceof DecoderInitializationException) { diff --git a/demos/main/src/main/java/androidx/media3/demo/main/SampleChooserActivity.java b/demos/main/src/main/java/androidx/media3/demo/main/SampleChooserActivity.java index 07ac791473..c0c9663a7b 100644 --- a/demos/main/src/main/java/androidx/media3/demo/main/SampleChooserActivity.java +++ b/demos/main/src/main/java/androidx/media3/demo/main/SampleChooserActivity.java @@ -40,7 +40,6 @@ import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.media3.common.MediaItem; @@ -163,7 +162,7 @@ public class SampleChooserActivity extends AppCompatActivity @Override public void onRequestPermissionsResult( - int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults.length == 0) { // Empty results are triggered if a permission is requested while another request was already diff --git a/demos/main/src/main/java/androidx/media3/demo/main/TrackSelectionDialog.java b/demos/main/src/main/java/androidx/media3/demo/main/TrackSelectionDialog.java index 7988266ddd..d4df2a1745 100644 --- a/demos/main/src/main/java/androidx/media3/demo/main/TrackSelectionDialog.java +++ b/demos/main/src/main/java/androidx/media3/demo/main/TrackSelectionDialog.java @@ -24,7 +24,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDialog; import androidx.fragment.app.DialogFragment; @@ -213,7 +212,6 @@ public final class TrackSelectionDialog extends DialogFragment { } @Override - @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { // We need to own the view to let tab layout work correctly on all API levels. We can't use // AlertDialog because it owns the view itself, so we use AppCompatDialog instead, themed using @@ -225,7 +223,7 @@ public final class TrackSelectionDialog extends DialogFragment { } @Override - public void onDismiss(@NonNull DialogInterface dialog) { + public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); onDismissListener.onDismiss(dialog); } @@ -290,7 +288,6 @@ public final class TrackSelectionDialog extends DialogFragment { } @Override - @NonNull public Fragment getItem(int position) { return tabFragments.valueAt(position); } @@ -364,8 +361,7 @@ public final class TrackSelectionDialog extends DialogFragment { } @Override - public void onTrackSelectionChanged( - boolean isDisabled, @NonNull List overrides) { + public void onTrackSelectionChanged(boolean isDisabled, List overrides) { this.isDisabled = isDisabled; this.overrides = overrides; } diff --git a/libraries/common/src/main/java/androidx/media3/common/util/ListenerSet.java b/libraries/common/src/main/java/androidx/media3/common/util/ListenerSet.java index bf06129c1f..a05d1a82d7 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/ListenerSet.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/ListenerSet.java @@ -23,7 +23,7 @@ import androidx.media3.common.C; import androidx.media3.common.FlagSet; import java.util.ArrayDeque; import java.util.concurrent.CopyOnWriteArraySet; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * A set of listeners. @@ -37,7 +37,7 @@ import javax.annotation.Nonnull; * @param The listener type. */ @UnstableApi -public final class ListenerSet { +public final class ListenerSet { /** * An event sent to a listener. @@ -234,15 +234,15 @@ public final class ListenerSet { return true; } - private static final class ListenerHolder { + private static final class ListenerHolder { - @Nonnull public final T listener; + public final T listener; private FlagSet.Builder flagsBuilder; private boolean needsIterationFinishedEvent; private boolean released; - public ListenerHolder(@Nonnull T listener) { + public ListenerHolder(T listener) { this.listener = listener; this.flagsBuilder = new FlagSet.Builder(); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java index 733b726899..4a4f839807 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java @@ -27,7 +27,6 @@ import android.os.Handler; import android.os.SystemClock; import android.util.Pair; import androidx.annotation.IntDef; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.media3.common.AudioAttributes; @@ -1838,7 +1837,7 @@ public final class DefaultAudioSink implements AudioSink { } @Override - public void onTearDown(@NonNull AudioTrack track) { + public void onTearDown(AudioTrack track) { Assertions.checkState(track == audioTrack); if (listener != null && playing) { // The audio track was destroyed while in use. Thus a new AudioTrack needs to be diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecCallback.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecCallback.java index a1de3f6f83..98c7604f76 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecCallback.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecCallback.java @@ -24,7 +24,6 @@ import android.media.MediaFormat; import android.os.Handler; import android.os.HandlerThread; import androidx.annotation.GuardedBy; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.media3.common.util.Util; @@ -207,15 +206,14 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // Called from the callback thread. @Override - public void onInputBufferAvailable(@NonNull MediaCodec codec, int index) { + public void onInputBufferAvailable(MediaCodec codec, int index) { synchronized (lock) { availableInputBuffers.add(index); } } @Override - public void onOutputBufferAvailable( - @NonNull MediaCodec codec, int index, @NonNull MediaCodec.BufferInfo info) { + public void onOutputBufferAvailable(MediaCodec codec, int index, MediaCodec.BufferInfo info) { synchronized (lock) { if (pendingOutputFormat != null) { addOutputFormat(pendingOutputFormat); @@ -227,14 +225,14 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } @Override - public void onError(@NonNull MediaCodec codec, @NonNull MediaCodec.CodecException e) { + public void onError(MediaCodec codec, MediaCodec.CodecException e) { synchronized (lock) { mediaCodecException = e; } } @Override - public void onOutputFormatChanged(@NonNull MediaCodec codec, @NonNull MediaFormat format) { + public void onOutputFormatChanged(MediaCodec codec, MediaFormat format) { synchronized (lock) { addOutputFormat(format); pendingOutputFormat = null; diff --git a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/MediaParserHlsMediaChunkExtractor.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/MediaParserHlsMediaChunkExtractor.java index 7c50462f71..50a568c5c6 100644 --- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/MediaParserHlsMediaChunkExtractor.java +++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/MediaParserHlsMediaChunkExtractor.java @@ -31,7 +31,6 @@ import android.media.MediaParser; import android.media.MediaParser.OutputConsumer; import android.media.MediaParser.SeekPoint; import android.text.TextUtils; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.media3.common.FileTypes; @@ -264,7 +263,7 @@ public final class MediaParserHlsMediaChunkExtractor implements HlsMediaChunkExt } @Override - public int read(@NonNull byte[] buffer, int offset, int readLength) throws IOException { + public int read(byte[] buffer, int offset, int readLength) throws IOException { int peekedBytes = extractorInput.peek(buffer, offset, readLength); totalPeekedBytes += peekedBytes; return peekedBytes; diff --git a/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java b/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java index 2aeede8bc0..0d25956566 100644 --- a/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java +++ b/libraries/session/src/main/java/androidx/media3/session/ConnectedControllersManager.java @@ -19,7 +19,6 @@ import static androidx.media3.common.util.Assertions.checkStateNotNull; import static androidx.media3.common.util.Util.postOrRun; import androidx.annotation.GuardedBy; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.collection.ArrayMap; import androidx.media3.common.Player; @@ -27,6 +26,7 @@ import androidx.media3.session.MediaSession.ControllerInfo; import com.google.common.collect.ImmutableList; import java.util.ArrayDeque; import java.util.Deque; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Manager that holds {@link ControllerInfo} of connected {@link MediaController controllers}. @@ -37,7 +37,7 @@ import java.util.Deque; * *

This class is thread-safe. */ -/* package */ final class ConnectedControllersManager { +/* package */ final class ConnectedControllersManager { private final Object lock; @@ -59,7 +59,7 @@ import java.util.Deque; } public void addController( - @NonNull T controllerKey, + T controllerKey, ControllerInfo controllerInfo, SessionCommands sessionCommands, Player.Commands playerCommands) { @@ -104,7 +104,7 @@ import java.util.Deque; return null; } - public void removeController(@NonNull T controllerKey) { + public void removeController(T controllerKey) { @Nullable ControllerInfo controllerInfo = getController(controllerKey); if (controllerInfo != null) { removeController(controllerInfo); @@ -112,7 +112,7 @@ import java.util.Deque; } public void removeController(ControllerInfo controllerInfo) { - @Nullable ConnectedControllerRecord record; + @Nullable /*Type*/ ConnectedControllerRecord record; synchronized (lock) { record = controllerRecords.remove(controllerInfo); if (record == null) { @@ -168,7 +168,7 @@ import java.util.Deque; * disconnected. */ @Nullable - public SequencedFutureManager getSequencedFutureManager(@NonNull T controllerKey) { + public SequencedFutureManager getSequencedFutureManager(T controllerKey) { @Nullable ConnectedControllerRecord info; synchronized (lock) { @Nullable ControllerInfo controllerInfo = getController(controllerKey); @@ -206,7 +206,7 @@ import java.util.Deque; } @Nullable - public ControllerInfo getController(@NonNull T controllerKey) { + public ControllerInfo getController(T controllerKey) { synchronized (lock) { return controllerInfoMap.get(controllerKey); } @@ -236,14 +236,14 @@ import java.util.Deque; private static final class ConnectedControllerRecord { - @NonNull public final T controllerKey; + public final T controllerKey; public final SequencedFutureManager sequencedFutureManager; public SessionCommands sessionCommands; public Player.Commands playerCommands; public Deque commandQueue; public ConnectedControllerRecord( - @NonNull T controllerKey, + T controllerKey, SequencedFutureManager sequencedFutureManager, SessionCommands sessionCommands, Player.Commands playerCommands) { diff --git a/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java b/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java index a7f24c1f54..393ce98408 100644 --- a/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java +++ b/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java @@ -22,7 +22,6 @@ import android.os.ConditionVariable; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.media3.common.util.HandlerWrapper; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -398,7 +397,7 @@ public final class FakeClockTest { } @Override - public boolean handleMessage(@NonNull Message msg) { + public boolean handleMessage(Message msg) { messages.add(new MessageData(msg.what, msg.arg1, msg.arg2, msg.obj)); return true; }