2016-05-20 5 views
1

Ich habe ein Problem mit Media Player immer nach einigen paar Minuten, wenn das Telefon schläft und Sie berühren es immer wieder, das Video hängt und hört auf zu spielen.android media player hört nach einigen Minuten auf zu spielen

Ich habe viele Lösungen hier auf Stackoverflow versucht, keine funktionierte. Ich ziehe mir fast die Haare aus !!!

ich diese Antwort habe versucht

Android MediaPlayer stops playing after some time

MediaPlayer randomly stops on Android 4.4 (19)

How to prevent mediaplayer to stop when screen goes off?

und viele weitere Antworten, sie alle nicht

funktioniert hat

Dies ist mein Code unten

public class MainActivity { 

    MediaPlayer mp; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mp = MediaPlayer.create(this, R.raw.my_webm_video); 
mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
     playVideo(); 

    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mp = MediaPlayer.create(this, R.raw.my_webm_video); 
     mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
     playVideo(); 
    } 

    public void playVideo(){ 

     SurfaceView sv = (SurfaceView) findViewById(R.id.surfaceView); 
     SurfaceHolder holder = sv.getHolder(); 
     holder.addCallback(new SurfaceHolder.Callback(){ 
      @Override 
      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } 

      @Override 
      public void surfaceCreated(SurfaceHolder holder) { 
       mp.setDisplay(holder); 
       mp.start(); 
       mp.setLooping(true); 
      } 

      @Override 
      public void surfaceDestroyed(SurfaceHolder holder) { 

      } 

     }); 
    } 


} 

Das ist mein XML-Layout

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <SurfaceView 
     android:id="@+id/surfaceView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

Antwort

0

ok, so dass ich gelöst endlich das Problem. Falls jemand anderes auf dieses Problem gestoßen ist:

In onCreate habe ich überprüft, ob das Video bereits abgespielt wurde, um sicherzustellen, dass es nicht jedes Mal neu abgespielt wird.

int firstPlayed = 0; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mp = MediaPlayer.create(this, R.raw.my_webm_video); 
     mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
     if(!mp.isPlaying()) { 
      firstPlayed = 1; 
      playVideo(); 
     } 
} 

Ich habe in onResume einhüllen der Benutzer aus der Aktivität navigiert und geht zurück, die der Bildschirm schwarz werden lässt.

public void onResume() { 
     super.onResume(); 
     if(!mp.isPlaying() && firstPlayed == 0) { 
      mp = MediaPlayer.create(this, R.raw.my_webm_video); 
      mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
      playVideo(); 
     } 
     firstPlayed = 0; 
} 

Und dann bemerkte ich, dass ich einen FirstPlayed Check benötigt, um sicher zu sein.