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

                            }
                        });
            }
        }
    });

}

 }

この問題を解決するにはどうすればよいですか? このアクティビティで同時ストリーミングを防ぐ方法は? 私を助けてください。

4

1 に答える 1

0

onPause メソッドでメディア プレーヤーを停止し、mediaPlayer=null; とも言う必要があります。

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

    mediaPlayer.stop();
    mediaPlayer=null;
}
于 2013-08-17T16:38:30.637 に答える