2016-05-14 6 views
0

einstellen Ich möchte Loop-Bedingungen und für die VideoView einstellen. Das versuche ich zu erreichen.Wie man Loop-Bedingungen für VideoView in Android

  1. Video Startet und beendet, wenn Text bearbeiten nicht ausgewählt ist.
  2. Wenn Video Start und EditText ausgewählt ist, wird Video auf Looping gesetzt.
  3. Wenn der Benutzer in den EditText eingibt und die Taste submit drückt, wird looping auf false gesetzt und die Aktivität wird beendet, nachdem das Video beendet wurde.
  4. Wenn EditText die Auswahl verliert, wird die Videoaktivität abgeschlossen.

Hier ist der Code, aber es funktioniert nicht für mich

mVideoView.setVideoPath(phone); 
     mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 

             { 
              @Override 
              public void onPrepared(final MediaPlayer mp) { 
               mVideoView.start(); 
               if (mVideoView.isPlaying()) { 
                mp.setLooping(false); 


               } 
              } 
             } 

     ); 

     CommentBox.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
         @Override 
         public void onCompletion(MediaPlayer mp) { 
          mp.setLooping(true); 
         } 
        }); 
       } 
      } 
     }); 

     mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 

              { 
               @Override 
               public void onCompletion(MediaPlayer mp1) { 
                finish(); 
               } 
              } 

     ); 
+0

ich immer noch verwirrt über Ihre Frage bin, was Sie genau erreichen wollen –

Antwort

1

Problem ist, dass Sie nicht mediaplayer.start() aufgerufen haben, nachdem Sie Schleife in onCompletionListener gesetzt().

ausgeführt ich den Code unten und es funktioniert gut hier

Lösung:

öffentlichen Bündelvariablentyp erstellen

b=new Bundle(); 
    b.putBoolean("repeat", false); 
    v.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.ak)); 

    v.requestFocus(); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (txt.getText().toString().length() > 0) { 
       b.putBoolean("repeat", false); 
      } 
     } 
    }); 

txt.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
@Override 
public void onFocusChange(View view, boolean has) { 
    if (has) { 
     b.putBoolean("repeat", true); 

    } 
} 
}); 

v.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
@Override 
public void onCompletion(MediaPlayer mediaPlayer) { 
    if (b.getBoolean("repeat") == true) { 
     mediaPlayer.setLooping(true); 
     mediaPlayer.start(); 
      Toast.makeText(getApplicationContext(),String.valueOf(b.getBoolean("repeat")),Toast.LENGTH_LONG).show(); 
    } else { 
     mediaPlayer.setLooping(false); 
     mediaPlayer.stop(); 
     Toast.makeText(getApplicationContext(),String.valueOf(b.getBoolean("repeat")),Toast.LENGTH_LONG).show(); 
    } 
} 
}); 
     v.start(); 
+0

Danke, aber ich habe es selbst herausgefunden! – Savita

+0

Wissen Sie, wie Sie die Dateien löschen können, wenn zwei boolesche Übereinstimmungen gefunden werden? – Savita

+0

Frage ist unklar, welche boolesche ?? –

Verwandte Themen