2016-05-20 20 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

okですので、私は最終的に問題を解決しました。他の人がこの問題に遭遇した場合

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

ユーザーがアクティビティからナビゲートして戻ってくると、ビデオ画面が黒くなります。

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

次に、私はfirstPlayedチェックが必要であることに気付きました。

関連する問題