I know I'm late with answer, but it could be helpful for some.
In your implementation when you call play immediately, after cueVideos(...), the player have not time to load any stream and your paly() call will be ignored, because:
cueVideos(List videoIds, int startIndex, int timeMillis) Cues
a list of videos, but does not download any of the video streams
or start playing until play() or seekToMillis(int) is called.
If you want to auto play, just use loadVideos(...) instead of cueVideos(...)
mYouTubePlayer.loadVideos(videosList);
or if you want to use the last one, just wait for few secs and then call play() like below:
mYouTubePlayer.cueVideos(videosList);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mYouTubePlayer.play();
}
}, 5000);