2016-05-17 6 views
0

Ich habe eine Videoansicht in einer Aktivität.VideoView stoppte auf Dialog geöffnet von Anykind

private void videoInit() { 
    videoView = (VideoView)findViewById(R.id.videoView); 

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      videoView.start(); 
      mp.setLooping(true); 

     } 
    }); 

    videoView.setVideoPath("android.resource://com.aplos.ideliver2/raw/iphone_inner_animation");//src/main/res/raw 
    videoView.requestFocus(); 
    videoView.start(); 
} 

Dies ist meine Funktion, und der Dialog wird mit einer Absicht für die andere Klasse geöffnet.

Dies wird für ein Szenario ausgeführt.

private void processError(Response mResponse) { 
    try { 
     AlertDialog.strMessage = mResponse.getResponseMessage(); 
     AlertDialog.strTitle = "Alert"; 
     AlertDialog.strButtonTitle = "OK"; 
     startActivity(new Intent(context, AlertDialog.class)); 
     overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
    } catch (Exception e) { 
     H.Handle(e); 
    } 
} 

Wenn der Dialog geöffnet wird, stoppt das Video. Ich möchte, dass das Video kontinuierlich läuft.

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    videoView.stopPlayback(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    videoView.stopPlayback(); 

} 

@Override 
protected void onResume() { 
    super.onResume(); 
    videoView.start(); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    videoView.start(); 
} 
+0

Wenn Sie möchten, dass auch etwas im Hintergrund funktioniert, dann müssen Sie den Dienst anstelle der Aktivität verwenden. –

Antwort

1

diese beiden

@Override 
protected void onPause() { 
    super.onPause(); 
    videoView.stopPlayback(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    videoView.start(); 
} 

entfernen und

@Override 
protected void onStop() { 
    super.onPause(); 
    videoView.stopPlayback(); 
} 

@Override 
protected void onRestart() { 
    super.onResume(); 
    videoView.start(); 
} 

hinzufügen Da onPause aufgerufen wird, wenn das Fenster selbst verdeckt wird teilweise, wie ein Pop erscheinen oben.

Edit: Da Sie mich gebeten, zu erklären, warum es funktioniert, müssen Sie den activty Lebenszyklus verstehen. OnStart() wird aufgerufen, wenn die Aktivität für den Benutzer vollständig nicht sichtbar ist, onPause jedoch aufgerufen wird, wenn die Aktivität teilweise unsichtbar ist, z. B. eine Benachrichtigungsbox für die Aktivität oder wenn Sie herunterfahren, um Ihre Benachrichtigungen usw. zu sehen.

mehr über Aktivität Lebenszyklus Um zu wissen, this out

+0

Nach onPause wird die Aktivität fortgesetzt, also wird onResume aufgerufen, selbst dann startet das Video dosent. Warum? –

+0

Perfekt, es hat funktioniert. Danke vielmals. Aber erkläre mir das Zyklus-Ding. –

+0

Ich habe eine Bearbeitung hinzugefügt, und bitte akzeptieren Sie die Antwort, wenn es funktioniert –

0

verwenden aktivieren

onStop() instead of onPause() 

und

onRestart() instead of onResume() 

Viel Glück ...!

Verwandte Themen