0

同じアクティビティに複数の MediaPlayer があります。次のように動作します。

変数の値が「yes」の場合、MediaPlayer mpOne が再生を開始し、MediaPlayer mptwo が再生を開始し、それ以外の場合は mpThree が開始します。
オーディオが終了すると、同じ別のプロセスが開始されます これは私のコードです:

MediaPlayer mpOne,mpTwo,mpThree,mpFour,mpFive

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

        mpOne= MediaPlayer.create(this, R.raw.one);
        mphora.setLooping(false);
mpTwo= MediaPlayer.create(this, R.raw.two);
        mphora.setLooping(false);
mpThree= MediaPlayer.create(this, R.raw.three);
        mphora.setLooping(false);
mpFour= MediaPlayer.create(this, R.raw.four);
        mphora.setLooping(false);
mpFive= MediaPlayer.create(this, R.raw.five);
        mphora.setLooping(false);

    mpOne.start();
        mpOne.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
                if (variable.equals("yes"){
                        mpTwo.start();
            } else {
            mpThree.start();    
            }
        });

        mpTwo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
            mpFour.start();
        });

        mpThree.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
            mpFour.start();
        });

        mpFour.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
            // same proccess
        });

}

私の問題は、すべてのオーディオを停止したいときです。現在、次のことを行うボタンがあります。

stop.setOnClickListener(new View.OnClickListener(){ 
                public void onClick(View view){ 

.setOnClickListener(new View.OnClickListener(){ 
                public void onClick(View view){ 

                    if(mpOne.isPlaying()){mpOne.stop();mpOne.release();}
                    else if(mpTwo.isPlaying()){mpTwo.stop();mpTwo.release();}
                    else if(mpThree.isPlaying()){mpThree.stop();mpThree.release();}
                    else if(mpFour.isPlaying()){mpFour.stop();mpFour.release();}
                    else if(mpFive.isPlaying()){mpFive.stop();mpFive.release();}
                }
                }
        });

問題は、それが機能することもあれば、オーディオがまだ再生されていることもあります。

同様の問題を検索して見つけましたが、解決策はありません

すべての再生を安全に停止する方法を教えてください。

事前にどうもありがとうございました。

よろしく

4

1 に答える 1

1

MediaPlayer インスタンスを 1 つだけ実行し、onCompletion で別のオーディオ ソースを設定できます。

于 2013-11-02T19:41:04.697 に答える