title: Playing an audio file with ExoPlayer a few seconds after calling .prepare()
body: <p>I have a feature in my app that has to play one short audio file multiple times, and using the code below I'm preparing <code>ExoPlayer</code> to play the audio:</p>
  
  <pre><code>SimpleExoPlayer player;
  private void readyExoPlayerRaw(int rawSound) {
      player = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector());
      DataSpec dataSpec = new DataSpec(RawResourceDataSource.buildRawResourceUri(rawSound));
      final RawResourceDataSource rawResourceDataSource = new RawResourceDataSource(this);
      try {
          rawResourceDataSource.open(dataSpec);
      } catch (RawResourceDataSource.RawResourceDataSourceException e) {
          e.printStackTrace();
      }
      MediaSource audioSource = 
          new ExtractorMediaSource.Factory(
              new DefaultDataSourceFactory(this, "appName"))
              .createMediaSource(rawResourceDataSource.getUri());
  
      player.prepare(audioSource);
      //player.setPlayWhenReady(true);
  }
  </code></pre>
  
  <p>The problem is that the sound plays fine when I uncomment the last line (<code>//player.setPlayWhenReady(true);</code>), but since I'm playing the sound a few seconds after I run this method, this line of code wont work! I think because it waits for a callback from previous line (<code>.prepare(...)</code>) and when it's ready, it will then play. So I thought that maybe I should call <code>start()</code> or something like that on the player, but there's just no such method.</p>
  
  <p>So I'm stuck with calling <code>.prepare()</code> each time I want to play the audio, but since it plays in very short intervals, calling <code>prepare()</code> causes an unsuitable delay.</p>
  
  <p>So am I missing something? How can I play a prepared <code>MediaSource</code> without preparing it again?</p>