Нет звука на сенсорной кнопке - PullRequest
1 голос
/ 28 января 2012

Если я использую:

    final Button btnNught = (Button) findViewById(R.id.night);
    btnNught.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            btnNught.setPressed(true);
        }
    });

И если я нажимаю на кнопку, я слушаю звук щелчка, но если я использую:

    btnNught.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (btnNught.isPressed()) {
                btnNught.setPressed(false);
                return true;
            }
            else {
                btnNught.setPressed(true);
                return false;
            }
        }
    });

Я не слушаю звук на ощупь. Где я ошибся?

Edit: Я хочу создать кнопку наподобие тумблера с двумя состояниями: нажата и не нажата с двумя разными цветами, конечно (обычный светло-серый не нажата и зеленый при нажатии).

В этом случае (выше), когда я касаюсь кнопки, я не слушаю звук, но если я использую метод onClick, я слушаю звук «щелчка». Как получить звук «щелчка» или «касания» при использовании метода onTouch

Ответы [ 6 ]

6 голосов
/ 18 октября 2012

Это работает для меня:

btnNught.setSoundEffectsEnabled(true);
btnNught.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
       if(event.getAction()!=MotionEvent.ACTION_UP ||        
          event.getAction()!=MotionEvent.ACTION_DOWN) 
       {
           return false;
       }
       if(event.getAction()==MotionEvent.ACTION_DOWN)
       {
            btnNught.playSoundEffect(SoundEffectConstants.CLICK);
            //Set whatever color you want to set
       }
       else 
       {

       }
       return true;
    }
});
1 голос
/ 28 января 2012

Попробуйте добавить android:soundEffectsEnabled="true" к тегу <Button>.

1 голос
/ 28 января 2012

Пожалуйста, при каких условиях вы можете попасть в btnNught.setPressed (true);во втором примере?Как я вижу, вы просто не можете нажать кнопку.При действии вниз вы потребляете действие, поэтому кнопка не будет нажата.

Редактировать: Поставить точку останова в начале слушателя и ввести ее в различных вариантах использования кнопкиИ проверь поведение.

0 голосов
/ 17 декабря 2012

Есть два способа прослушивания звука

1 использовать встроенный звук

Go to Settings -> Sound -> 
And do the following settings 

sound profile set **Normal**
Touch sound set **ON**
  1. использовать пользовательский звук

    воспроизводить пользовательский звук

0 голосов
/ 10 августа 2012

Следующая строка будет воспроизводить звук щелчка:

btnNught.playSoundEffect(SoundEffectConstants.CLICK);
0 голосов
/ 28 января 2012

Ваш вопрос не очень понятен, когда вы хотите воспроизвести звук, но я отвечаю на ваш вопрос, предполагая, что вы хотите воспроизвести его, когда происходит Action_DOWN. Если вы планируете создать кнопку переключения, ваш код должен выглядеть примерно так

btnNught.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
       if(event.getAction()!=MotionEvent.ACTION_UP ||        
               event.getAction()!=MotionEvent.ACTION_DOWN) 
       {
             return false;
       }
       if(event.getAction()==MotionEvent.ACTION_DOWN)
       {
          btnNught.setPressed(true);
          //Set whatever color you want to set

       }
       else 
       {
          btnNught.setPressed(false);
       }
        return true;
    }
});
...