繁体   English   中英

MediaPlayer:声音彼此叠加播放

[英]MediaPlayer: Sounds playing over the top of each other

我有一个带有多个按钮的音板(大约17个),每个按钮都链接到一个.mp3声音。

问题是当播放声音时,当我按下另一个按钮时,两者都在后台播放。

我希望能够在按下其他按钮时停止播放声音并开始播放新声音。 另外,是否可以通过再次按下其按钮来停止当前播放的声音?

另外,我不太喜欢声明以下代码的部分:private MediaPlayer [] mPlayers = new MediaPlayer [17];

该数字(在这种情况下为17)决定了声音可以播放的次数。 之后,似乎无法再播放其他声音。 有没有办法使这个不确定?

我没有粘贴活动中的所有代码,而是附加了显眼的代码,并按其在我的主活动.java文件中出现的顺序对其进行了编号。

感谢您的帮助。

    private int mNextPlayer = 0;


2) a.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                v.startAnimation(animAlpha);

                startSound(R.raw.likethebattle);

            }

        });


3) public void onDestroy() {
        super.onDestroy(); // <---------------------- This needed to be there
        for (int i = 0; i < mPlayers.length; ++i)
            if (mPlayers[i] != null)
                try {
                    mPlayers[i].release();
                    mPlayers[i] = null;
                } catch (Exception ex) {
                    // handle...
                }
    }

4)    private void startSound(int id) {
        try {


            if (mPlayers[mNextPlayer] != null) {

                mPlayers[mNextPlayer].reset();
                mPlayers[mNextPlayer].prepare();

                mPlayers[mNextPlayer].stop();
                mPlayers[mNextPlayer].release();
                mPlayers[mNextPlayer] = null;
            }
            mPlayers[mNextPlayer] = MediaPlayer.create(this, id);
            mPlayers[mNextPlayer].start();
        } catch (Exception ex) {
            // handle
        } finally {
            ++mNextPlayer;
            mNextPlayer %= mPlayers.length;
        }

    }

您似乎没有停止正在播放MediaPlayer。 startSound(id)不会停止当前正在播放的声音。 finally { ++mNextPlayer; mNextPlayer %= mPlayers.length; } finally { ++mNextPlayer; mNextPlayer %= mPlayers.length; } finally { ++mNextPlayer; mNextPlayer %= mPlayers.length; }您将计数器移到数组中的下一个播放器,并在下次输入startSound()方法时,您的计数器没有指向先前启动的播放器,因此无法停止它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM