2017-11-01 3 views
1

Ich erstelle einen Audio-Player und kann ein Problem nicht lösen. Ich habe zwei Tasten - Start und Stopp und einen Fortschrittsbalken. Wenn ich den Fortschrittsbalken verändere, höre ich die Musik in der onStartTrackingTouch-Methode von setOnSeekBarChangeListener auf, um die Musik in onStopTrackingTouch reibungslos zu ändern und fortzusetzen, wenn die Änderung gestoppt wird. Wenn jedoch der StopButton gedrückt wird und nach einer Änderung ein Wechsel stattfindet, beginnt die Wiedergabe der Musik erneut. Ich möchte die Musik nach dem Stoppen nur dann fortsetzen, wenn der StopButton vor dem Ändern nicht gedrückt wurde. Wie man es repariert?Stoppe Musik, wenn StopButton gedrückt wird

playProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 
    { 
      @Override 
      public void onProgressChanged (SeekBar seekBar,int i, boolean fromUser){ 
       if(fromUser){ 
        mPlayer.seekTo(i); 
       } 

      } 

      @Override 
      public void onStartTrackingTouch (SeekBar seekBar){ 
       mPlayer.pause(); 
     } 

      @Override 
      public void onStopTrackingTouch (SeekBar seekBar){ 
       mPlayer.start(); 
     } 
    }); 

    //====================================================== 
} 

public void startAudio(View view) { 
     mPlayer.start(); 
} 

public void pauseAudio(View view) { 
     mPlayer.pause(); 
} 

Antwort

0

Gebrauch immer einfach Flagge. Flag kann vom variablen Typ sein. In diesem Fall ist es normalerweise normal, auf anderen Wegen boolesch zu sein.

// Create flag 
var STOP_BTN_IS_PRESSED = false; 

playProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 
    { 
      @Override 
      public void onProgressChanged (SeekBar seekBar,int i, boolean fromUser){ 
       if(fromUser){ 
        mPlayer.seekTo(i); 
       } 

      } 

      @Override 
      public void onStartTrackingTouch (SeekBar seekBar){ 
       mPlayer.pause(); 
     } 

      @Override 
      public void onStopTrackingTouch (SeekBar seekBar){ 
        if (STOP_BTN_IS_PRESSED == false) { 
         mPlayer.start(); 
        } 
     } 
    }); 

    //====================================================== 
} 

public void startAudio(View view) { 

     STOP_BTN_IS_PRESSED = false; 

     mPlayer.start(); 
} 

public void pauseAudio(View view) { 

     STOP_BTN_IS_PRESSED = true; 

     mPlayer.pause(); 
} 
+0

Genau das, was ich will! Vielen Dank! Ich habe versucht eine Fahne, aber war verwirrt und gescheitert :) – fxvlad

+0

Bitte klicken Sie auf positive machen meinen Tag;) –

+1

Ich würde es gerne tun, aber meine Bewertung ist unter 15, so kann ich das nicht tun :( – fxvlad

0

Try this,

playProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 
    { 
      @Override 
      public void onProgressChanged (SeekBar seekBar,int i, boolean fromUser){ 

      } 

      @Override 
      public void onStartTrackingTouch (SeekBar seekBar){ 
      mPlayer.pause(); 
     } 

      @Override 
      public void onStopTrackingTouch (SeekBar seekBar){ 
       mPlayer.seekTo(seekbar.getProgress()); 
       mPlayer.start(); 
     } 
    }); 

    //====================================================== 
} 
+0

Es ist, was ich will, aber wenn ich den Daumen der Fortschrittsbalken halte und ihn ändere, während Musik gespielt wird, ruckelte die Musik. – fxvlad

+0

Musik anhalten, wenn Sie berühren/den Fortschritt ändern und fortfahren, wenn die Fortschrittsänderung abgeschlossen ist –

Verwandte Themen