【问题标题】:How to play and stop sound by one button using Soundpool如何使用 Soundpool 一键播放和停止声音
【发布时间】:2017-05-07 16:44:54
【问题描述】:

我是这里的新手,我是 java 的新手。我所有关于代码的知识都基于我在网络上为我的项目找到的内容。所以一方面我知道一些困难的东西,另一方面我不知道一些简单的东西。现在我被困在这种情况下。

我有一个带有循环声音的按钮我想要做的是当我触摸按钮时它应该改变“button_prees”上的图像当我释放按钮它应该播放声音并改变“button_on”上的图像所以在那一刻下面的代码工作正常,但现在我正在尝试做相反的顺序。您触摸同一个按钮,它会在“button_prees2”上更改图像,而不是当您释放按钮时,它应该停止播放声音并在“button_off”上更改图像

如何在下面的代码中实现这一点?

final Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()){
                    case MotionEvent.ACTION_DOWN:


                       b1.setBackgroundResource(R.drawable.button_prees);

                        break;

                    case MotionEvent.ACTION_MOVE:

                        break;

                    case MotionEvent.ACTION_UP:


                        myS.play(s1I, 1, 1, 1, -1, 1);

                        b1.setBackgroundResource(R.drawable.button_on);

                        break;
                }
                return true;
            }
        });

【问题讨论】:

    标签: android audio ontouchlistener soundpool motionevent


    【解决方案1】:

    您可以使用布尔值作为按钮状态的标志。非常简短和基本:

    boolean soundsOn = false;
    public void setSoundsOn(boolean soundsOn){
        this.soundsOn = soundsOn;
    }
    
    public boolean isSoundsOn(){
        return soundsOn;
    }
    ...
    
    // Then for your Button listener:
    onTouch(...)
    if (!isSoundsOn){
      // Your above above code to change resources, start playing
      // EXCEPT 
      case MotionEvent.ACTION_UP: 
      ...
      setSoundsOn(true);
      ...
    }else{
      // Code to stop etc.
      // INCLUDING 
      case MotionEvent.ACTION_UP: 
      ...
      setSoundsOn(false);
      ...
    }
    ...
    

    理想情况下,您应该在调用setSoundsOn(...) 之前确保声音已成功启动/停止,否则您的标签可能最终会说什么不是。希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多