in LeanbackShowcase/app/src/main/java/androidx/leanback/leanbackshowcase/app/media/MusicPlaybackService.java [224:255]
public void playMediaItem(MediaMetaData mediaItemToPlay) {
if (mediaItemToPlay == null) {
throw new IllegalArgumentException("mediaItemToPlay is null!");
}
int mediaItemPos = findMediaItemPosition(mediaItemToPlay);
if (mediaItemPos == -1) {
throw new IllegalArgumentException("mediaItemToPlay not found in the media item list!");
}
if (mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN) != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
Log.e(TAG, "playMediaItem cannot obtain audio focus!");
return;
}
if (!mMediaSession.isActive()) {
mMediaSession.setActive(true);
}
if (mCurrentMediaItem != null && mInitialized &&
mCurrentMediaItem.getMediaSourceUri().equals(mediaItemToPlay.getMediaSourceUri())) {
if (!isPlaying()) {
// This media item had been already playing but is being paused. Will resume the player.
// No need to reset the player
play();
}
} else {
mCurrentMediaPosition = mediaItemPos;
notifyMediaItemChanged(mediaItemToPlay);
prepareNewMedia();
}
}