2017-09-05 1 views
0

Je souhaite que chaque fichier son de ma base de données soit lu deux fois avant de lire le fichier son suivant.Media Player lit deux fois chaque fichier son

Voici ma classe.

public void startSlides() { 

    timer = new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() { 

     public void run() { 
      runOnUiThread(new Runnable() { 
       public void run() { 

        Intent intent = getIntent(); 

        int setId = intent.getIntExtra("SelectedSetId",0); 

        databaseAccess.open(); 


        setId = setId + 1; 


        final List<byte[]> audio = databaseAccess.getAudioA(setId); 

        if (i > audio.size()){ 
         i = 0; 
        }else{ 
         playAudio(audio.get(i)); 
         i++;} 


        List<String> vocab = databaseAccess.getVocabNameA(setId); 
        textView2.setText(vocab.get(k)); 
        k++; 

        textView.setText(+j + "/" + vocab.size()); 
        j++; 

        databaseAccess.close(); 

        if (j == vocab.size() + 1) { 
         timer.cancel(); 
        } 
       } 
      }); 
     } 

    }, 0, DURATION); 

} 

J'ai essayé d'appeler la méthode audio de jeu deux fois, mais il ne fonctionne pas (Il joue juste le même fichier en même temps).

final List<byte[]> audio = databaseAccess.getAudioA(setId); 

        //first time 

        if (i > audio.size()){ 
         i = 0; 
        }else{ 
         playAudio(audio.get(i)); 
         i++;} 

        //second time 

        if (i > audio.size()){ 
         i = 0; 
        }else{ 
         playAudio(audio.get(i)); 
         i++;} 

Quelqu'un at-il une suggestion comment dois-je faire? Merci

+0

* Comment fixer mon code * ** ce qui est brisé ** est peut-être 'playAudio' Créer une nouvelle discussion?? Vous devez attendre qu'il se termine - devinez sauvage! –

+0

@ScaryWombat, je veux dire toute suggestion comment dois-je faire pour lire le fichier audio deux fois. – chernting

+0

Je suis désolé, je ne comprends pas ce que vous voulez dire. – chernting

Répondre

0

faire de cette façon peut vous aider:

private int mPlaybackCount = 0; 

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        if(mPlaybackCount < 1){ 
         mPlaybackCount++; 
         // Play Song again 
        } else { 
         mPlaybackCount = 0; 
         // Play Next Song 
        } 


       } 
      }); 
+0

Salut, j'ai ajouté ceci dans ma méthode playAudio, mais il ne fonctionne toujours pas. – chernting