Loading core/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -5072,7 +5072,7 @@ package android.media { } public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation { method @RequiresPermission(android.Manifest.permission.BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener(@NonNull android.content.Context, @NonNull android.media.MediaPlayer.OnRtpRxNoticeListener, @Nullable android.os.Handler); method @RequiresPermission(android.Manifest.permission.BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaPlayer.OnRtpRxNoticeListener); } public static interface MediaPlayer.OnRtpRxNoticeListener { Loading media/java/android/media/MediaPlayer.java +12 −18 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media; import static android.Manifest.permission.BIND_IMS_SERVICE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -91,6 +92,7 @@ import java.util.Scanner; import java.util.Set; import java.util.UUID; import java.util.Vector; import java.util.concurrent.Executor; /** Loading Loading @@ -2172,7 +2174,7 @@ public class MediaPlayer extends PlayerBase mOnVideoSizeChangedListener = null; mOnTimedTextListener = null; mOnRtpRxNoticeListener = null; mOnRtpRxNoticeHandler = null; mOnRtpRxNoticeExecutor = null; synchronized (mTimeProviderLock) { if (mTimeProvider != null) { mTimeProvider.close(); Loading Loading @@ -3711,7 +3713,6 @@ public class MediaPlayer extends PlayerBase case MEDIA_RTP_RX_NOTICE: final OnRtpRxNoticeListener rtpRxNoticeListener = mOnRtpRxNoticeListener; final Handler rtpRxNoticeHandler = mOnRtpRxNoticeHandler; if (rtpRxNoticeListener == null) { return; } Loading @@ -3730,15 +3731,10 @@ public class MediaPlayer extends PlayerBase } finally { parcel.recycle(); } if (rtpRxNoticeHandler == null) { rtpRxNoticeListener.onRtpRxNotice(mMediaPlayer, noticeType, data); } else { rtpRxNoticeHandler.post( () -> mOnRtpRxNoticeExecutor.execute(() -> rtpRxNoticeListener .onRtpRxNotice(mMediaPlayer, noticeType, data)); } } return; default: Loading Loading @@ -4305,28 +4301,26 @@ public class MediaPlayer extends PlayerBase * * @see OnRtpRxNoticeListener * * @param listener the listener called after a notice from RTP Rx * @param handler the {@link Handler} that receives RTP Tx events. If null is passed, * notifications will be posted on the thread that created this MediaPlayer * instance. If the creating thread does not have a {@link Looper}, then * notifications will be posted on the main thread. * @param listener the listener called after a notice from RTP Rx. * @param executor the {@link Executor} on which to post RTP Tx events. * @hide */ @SystemApi @RequiresPermission(BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener( @NonNull Context context, @NonNull OnRtpRxNoticeListener listener, @Nullable Handler handler) { @NonNull @CallbackExecutor Executor executor, @NonNull OnRtpRxNoticeListener listener) { Objects.requireNonNull(context); Preconditions.checkArgument( context.checkSelfPermission(BIND_IMS_SERVICE) == PERMISSION_GRANTED, BIND_IMS_SERVICE + " permission not granted."); mOnRtpRxNoticeListener = Objects.requireNonNull(listener); mOnRtpRxNoticeHandler = handler; mOnRtpRxNoticeExecutor = Objects.requireNonNull(executor); } private OnRtpRxNoticeListener mOnRtpRxNoticeListener; private Handler mOnRtpRxNoticeHandler; private Executor mOnRtpRxNoticeExecutor; /** * Register a callback to be invoked when a selected track has timed metadata available. Loading Loading
core/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -5072,7 +5072,7 @@ package android.media { } public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation { method @RequiresPermission(android.Manifest.permission.BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener(@NonNull android.content.Context, @NonNull android.media.MediaPlayer.OnRtpRxNoticeListener, @Nullable android.os.Handler); method @RequiresPermission(android.Manifest.permission.BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaPlayer.OnRtpRxNoticeListener); } public static interface MediaPlayer.OnRtpRxNoticeListener { Loading
media/java/android/media/MediaPlayer.java +12 −18 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media; import static android.Manifest.permission.BIND_IMS_SERVICE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -91,6 +92,7 @@ import java.util.Scanner; import java.util.Set; import java.util.UUID; import java.util.Vector; import java.util.concurrent.Executor; /** Loading Loading @@ -2172,7 +2174,7 @@ public class MediaPlayer extends PlayerBase mOnVideoSizeChangedListener = null; mOnTimedTextListener = null; mOnRtpRxNoticeListener = null; mOnRtpRxNoticeHandler = null; mOnRtpRxNoticeExecutor = null; synchronized (mTimeProviderLock) { if (mTimeProvider != null) { mTimeProvider.close(); Loading Loading @@ -3711,7 +3713,6 @@ public class MediaPlayer extends PlayerBase case MEDIA_RTP_RX_NOTICE: final OnRtpRxNoticeListener rtpRxNoticeListener = mOnRtpRxNoticeListener; final Handler rtpRxNoticeHandler = mOnRtpRxNoticeHandler; if (rtpRxNoticeListener == null) { return; } Loading @@ -3730,15 +3731,10 @@ public class MediaPlayer extends PlayerBase } finally { parcel.recycle(); } if (rtpRxNoticeHandler == null) { rtpRxNoticeListener.onRtpRxNotice(mMediaPlayer, noticeType, data); } else { rtpRxNoticeHandler.post( () -> mOnRtpRxNoticeExecutor.execute(() -> rtpRxNoticeListener .onRtpRxNotice(mMediaPlayer, noticeType, data)); } } return; default: Loading Loading @@ -4305,28 +4301,26 @@ public class MediaPlayer extends PlayerBase * * @see OnRtpRxNoticeListener * * @param listener the listener called after a notice from RTP Rx * @param handler the {@link Handler} that receives RTP Tx events. If null is passed, * notifications will be posted on the thread that created this MediaPlayer * instance. If the creating thread does not have a {@link Looper}, then * notifications will be posted on the main thread. * @param listener the listener called after a notice from RTP Rx. * @param executor the {@link Executor} on which to post RTP Tx events. * @hide */ @SystemApi @RequiresPermission(BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener( @NonNull Context context, @NonNull OnRtpRxNoticeListener listener, @Nullable Handler handler) { @NonNull @CallbackExecutor Executor executor, @NonNull OnRtpRxNoticeListener listener) { Objects.requireNonNull(context); Preconditions.checkArgument( context.checkSelfPermission(BIND_IMS_SERVICE) == PERMISSION_GRANTED, BIND_IMS_SERVICE + " permission not granted."); mOnRtpRxNoticeListener = Objects.requireNonNull(listener); mOnRtpRxNoticeHandler = handler; mOnRtpRxNoticeExecutor = Objects.requireNonNull(executor); } private OnRtpRxNoticeListener mOnRtpRxNoticeListener; private Handler mOnRtpRxNoticeHandler; private Executor mOnRtpRxNoticeExecutor; /** * Register a callback to be invoked when a selected track has timed metadata available. Loading