Replace Handler with Executor

This change addresses API council feedback around the new
setOnRtpRxNoticeListener method.

Bug: 168585020
Test: Manually built the tree.
Test: Tests pending as per b/169965769.
Change-Id: Ie8291df9b10960f78bdfdd5986767e896a953abf
Merged-In: Ie8291df9b10960f78bdfdd5986767e896a953abf
This commit is contained in:
Santiago Seifert
2021-02-11 15:50:14 +00:00
committed by Josh Hou
parent caf9ae8b52
commit 49bd548e23
2 changed files with 13 additions and 19 deletions

View File

@@ -5097,7 +5097,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 {

View File

@@ -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;
@@ -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;
/**
@@ -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();
@@ -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;
}
@@ -3730,14 +3731,9 @@ public class MediaPlayer extends PlayerBase
} finally {
parcel.recycle();
}
if (rtpRxNoticeHandler == null) {
rtpRxNoticeListener.onRtpRxNotice(mMediaPlayer, noticeType, data);
} else {
rtpRxNoticeHandler.post(
() ->
rtpRxNoticeListener
.onRtpRxNotice(mMediaPlayer, noticeType, data));
}
mOnRtpRxNoticeExecutor.execute(() ->
rtpRxNoticeListener
.onRtpRxNotice(mMediaPlayer, noticeType, data));
}
return;
@@ -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.