2016-06-30 4 views
2

私のプロジェクトでは、シャウトキャストストリームを再生するメディアプレーヤーを作成しようとしています。デバイス上に戻るボタンが押されるまで、すべてがうまくいくように見えました。これは、アクティビティを停止し、再び起動したときにデバイスがそのアクティビティを再現させると思います。問題は、活動が再現されたときに、メディアプレイヤーのコントロールが失われ、新しいメディアプレイヤーが作成されることです。アクティビティが再作成されたときにメディアプレーヤーのコントロールが失われる

その時点でメディアプレーヤーのコントロールを元に戻す必要があります。どのように可能ですか?

コードのこの部分は、コードのこの部分は機能playOnReady(に属する

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn = (Button) findViewById(R.id.button); 
    if (mediaPlayer == null){ 
     mediaPlayer = new MediaPlayer(); 
    try { 
     mediaPlayer.setDataSource(getString(R.string.yayin)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    mediaPlayer.prepareAsync(); 
    } 

    if(!isPlaying){ 

     btn.setBackgroundResource(R.drawable.oynat); 

    } 
    else{ 

     btn.setBackgroundResource(R.drawable.durdur); 

    } 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(!isPlaying){ 

       playOnReady(); 
       isPlaying = true; 
       btn.setBackgroundResource(R.drawable.durdur); 

      } 
      else{ 

       mediaPlayer.reset(); 
       isPlaying = false; 
       btn.setBackgroundResource(R.drawable.oynat); 

      } 
     } 
    }); 

をOnCreate関数に属する)

private void playOnReady(){ 

    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 
      mp.start(); 

     } 
    }); 

} 
+0

このようにMediaPlayerの1つのインスタンスを使用します。 http://stackoverflow.com/questions/14135459/create-only-one-object-for-a-class-and-reuse-same-objectだからあなたはアプリ内のどこでも同じインスタンスを持つでしょう。 –

+0

サービスを使用して問題を解決しました!とにかくありがとう! –

答えて

0

使用するthisチュートリアル私は、いつでも必要なときに私がコントロールできるメディアプレイヤーを扱うサービスを構築することができました。

0

は、Androidのアクティビティライフサイクルフローチャートを見てください:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

アクティビティを終了するときにonPauseが呼び出され、再度入力するときにonResumeが呼び出されるパスを考慮する必要があります。 onCreateからonResumeにコードの一部または全部を移動するだけで簡単に解決できます。

+0

私はサイクルを理解しましたが、関連する部分をonResumeに移動したときに何も変わっていません。それでも、私はプレーヤーのコントロールを持っていません。 –

関連する問題