【问题标题】:How can I make a sound overlap when pressing a button multiple times?多次按下按钮时如何使声音重叠?
【发布时间】:2023-03-24 23:04:01
【问题描述】:

我是 Android Java 编程的新手,但我自己编写 Java 已经有很长时间了。我创建了一个小应用程序,当单击按钮时会播放声音。理想情况下,当点击按钮时,按钮应该播放一个完整长度的声音,并且当在声音仍在播放时点击按钮时,它会播放与当前声音重叠的相同声音。虽然,在我的应用程序中,在播放声音时按下它不会做任何事情,并且只会在播放完声音后按下它才会播放声音。

我尝试在按下时为sound.start() 创建一个新线程,这样它就会像我希望的那样重叠,但是在为声音创建线程时出现错误(无法解析符号“开始” )。

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

    // Button that is pressed to play the sound.
    imgBtn = findViewById(R.id.imageViewItm);

    // The sound that is played.
    final MediaPlayer sound = MediaPlayer.create(this, R.raw.sound_stuff);

    //Listener that will run the onClick() method when imgBtn is pressed.
    imgBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Plays sound
            sound.start();
        }
    });
}

【问题讨论】:

    标签: java android audio android-mediaplayer


    【解决方案1】:

    我认为每次单击按钮时创建一个新的MediaPlayer 应该可以正常工作。我还没有测试代码。如果您遇到错误,请告诉我。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        //Button that is pressed to play the sound.
        imgBtn = findViewById(R.id.imageViewItm);
    
        //Listener that will run the onClick() method when imgBtn is pressed.
        imgBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Plays sound
                MediaPlayer sound = MediaPlayer.create(MainActivity.this, R.raw.sound_stuff);
                sound.start();
            }
        });
    }
    

    【讨论】:

    • 谢谢!这行得通。我不知道为什么我没有想到这个哈哈哈。
    • 很高兴知道我可以提供帮助。欢迎来到 StackOverflow。 :)
    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2014-11-02
    • 2015-05-01
    相关资源
    最近更新 更多