2016-05-20 5 views
1

У меня проблема с медиаплеером, который всегда останавливается случайным образом через несколько минут, чаще всего, когда телефон спит, а вы снова касаетесь его, видео висит и перестает играть.Андроид медиаплеера перестает играть через несколько минут

Я пробовал много решений здесь, в stackoverflow, никто не работал. Я почти вытаскиваю свои волосы!

Я попробовал этот ответ

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?

и многие другие ответы, все они не работали

Это мой код ниже

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) { 

      } 

     }); 
    } 


} 

Это мой макет XML

<?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> 

ответ

0

нормально, поэтому я, наконец, решить эту проблему. Включение любого другого в эту проблему

in onCreate Я проверил, было ли видео уже воспроизводится, чтобы убедиться, что он не вызывается для повторного воспроизведения каждый раз.

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(); 
     } 
} 

Я проверил в onResume упаковывают пользователь переходит из деятельности и уходит обратно, что делает экран видео почернеет.

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; 
} 

И тогда я заметил, что мне нужен был первый тест, чтобы быть уверенным.

Смежные вопросы