Exemplo n.º 1
0
 private void playAudioBlock(int blockId,PostFinishedPlaying callback) 
 {
     System.Diagnostics.Debug.WriteLine("Tocando Bloco " + blockId);
     isPlaying = true;
     playedLast = blockId;
     player.play(blockId, () => 
     {
         if (blockId == (blocks.Count - 1)) 
         {
             // última posição.
             System.Diagnostics.Debug.WriteLine("Última posição tocada, parando áudio.");
             isPlaying = false;
             releaseResources();
             callback();
         }
         else if (blocksAvaliability[(blockId + 1)])
         {
             // Toca o próximo bloco
             System.Diagnostics.Debug.WriteLine("Bloco " + blockId + " Tocado, Tocando bloco " + (blockId+1));
             playAudioBlock((blockId + 1), callback);
         }
         else 
         {
             // Bloco não baixado ainda
             System.Diagnostics.Debug.WriteLine("Próximo bloco ainda não foi baixado. Aguardando.");
             isPlaying = false;
         }
     });
   }
Exemplo n.º 2
0
 private void makeRequests(Post post,PostFinishedPlaying callback)
 {
    ThreadPool.QueueUserWorkItem(state => 
    {
        for (int i = 0; i < blocks.Count; i++)
        {
            bingService.GetAsAudio2(blocks[i], i, r =>
             {
                System.Diagnostics.Debug.WriteLine("Block " + r + " Downloaded");
                 blocksAvaliability[r] = true;
                 if (r == 0 || ((r - 1 == playedLast) && !isPlaying)) 
                 {
                     playAudioBlock(r, callback);
                 }
             });
         }
     });
  }
Exemplo n.º 3
0
 public void start(Post post, PostFinishedPlaying callback)
 {
     releaseResources(); //
     createBlocks(post);
     makeRequests(post,callback);
 }