2013-08-17 4 views
0

Я написал приложение для радиостанции, которая работает хорошо. Если я нажму, чтобы вернуться на рабочий стол и снова активировать приложение, это приведет к повторному потоку приложения, что приведет к одновременному запуску 2 потоков.Как предотвратить параллельное потоковое вещание

Это мой код;

public class MainActivity extends Activity { 

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

    this.setTitle("Standart FM"); 

    startButton = (Button) findViewById(R.id.buttonBasla); 
    facebookButton = (Button) findViewById(R.id.buttonFacebook); 
    twitterButton = (Button) findViewById(R.id.buttonTwitter); 
    Intent myService = new Intent(this, MyMediaPlayerService.class); 
    pd = new ProgressDialog(MainActivity.this); 

    mediaPlayer = new MediaPlayer(); 

    if (isOnline()) { 

     pd.setCancelable(false); 
     pd.setMessage("Yükleniyor..."); 
     pd.show(); 

     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     try { 
      mediaPlayer.setDataSource(path); 
      mediaPlayer.prepareAsync(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     mediaPlayer 
       .setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

        @Override 
        public void onPrepared(MediaPlayer mp) { 
         mp.start(); 
         pd.dismiss(); 
        } 
       }); 
    } else { 
     .... 
    } 

    startButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent myService = new Intent(MainActivity.this, 
        MyMediaPlayerService.class); 
      if (mediaPlayer.isPlaying()) { 
       startButton.setBackgroundResource(R.drawable.andplaybtn); 
       mediaPlayer.stop(); 
      } else { 
       startButton.setBackgroundResource(R.drawable.andstopbtn); 

       mediaPlayer.reset(); 
       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
       try { 
        mediaPlayer.setDataSource(path); 
        mediaPlayer.prepareAsync(); 
        pd.setCancelable(false); 
        pd.setMessage("Yükleniyor..."); 
        pd.show(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

       mediaPlayer 
         .setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

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

          } 
         }); 
      } 
     } 
    }); 

} 

} 

Как решить эту проблему? Как предотвратить одновременную поточную передачу в этом мероприятии? Пожалуйста, помогите мне.

ответ

0

Вы должны остановить медиаплеер в методе onPause, а также сказать mediaPlayer = null;

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

    mediaPlayer.stop(); 
    mediaPlayer=null; 
} 
+0

Спасибо за ваш answer.How я могу сделать, что в этих кодов? Я написал OnPause() метод и называется mediaPlayer.stop(), то я вместо mediaPlayer.stop() я написал OnPause() .Is это правильно? А также, где я могу написать mediaPlayer = null? – emreturka

+0

Я отредактировал ответ, чтобы вы его увидели. Это то, что вам нужно добавить. Также я рекомендую вам прочитать это, это даст вам представление о том, почему это происходит и что вам нужно ухаживать в будущем. Удачи! http://developer.android.com/reference/android/app/Activity.html – JanBo

+0

:(Но он заканчивает приложение. Я хочу посетить приложение, и если я нажму на спину для перехода на рабочий стол, а затем снова нажмите приложение, оно не будет транслироваться снова. – emreturka

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