2016-12-20 3 views
0

Я пытаюсь сделать простое приложение: есть одна кнопка в середине, на которую будет нажимать ребенок. Пока эта кнопка удерживается, она воспроизводит определенный MP3.Как воспроизводить звук только при нажатой кнопке?

На данный момент я пробовал с onClick, но, который воспроизводится только при отпускании кнопки.

+0

Связанный: http://stackoverflow.com/questions/7643146/how-to-handle-touch-or -press-down-events-in-android – Isaac

ответ

0

Попробуйте что-нибудь подобное. Используя логическое «воспроизведение», вы можете создать нить/петлю в другом месте, чтобы проверить, продолжают ли играть и удерживать звук.

button.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View arg0, MotionEvent arg1) { 
     if (arg1.getAction()==MotionEvent.ACTION_DOWN) { 
      playing = true; 
     } else { 
      playing = false; 
     } 
     return true; 
    } 
}); 
3

Вместо использования onClickListener, который не выставляет ничего больше, то интерфейс для печати и освобождения, вам нужно будет использовать onTouchListener - который предоставляет все сенсорные события представления.

myButton.setOnTouchListener(new View.OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     switch (event.getAction()) { 

      MotionEvent.ACTION_DOWN: 

       // start playing 
       return true; 

      MotionEvent.ACTION_UP: 

       // stop playing 
       return true; 
     } 

     return false; 
    } 
}); 
0

Попробуйте OnFocusChangeListener

Button.setOnFocusChangeListener(new OnFocusChangeListener() {   
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (!hasFocus) { 
       // code to execute when Button loses focus, i.e. stop music 
      } 
     } 
    }); 
0

Поскольку кнопка является компонентом вид вы можете использовать View.OnTouchListener слушателя событий с ACTION_BUTTON_PRESS & ACTION_BUTTON_RELEASE MotionEvent.

Вот пример:

yourButton.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_BUTTON_PRESS){ 

      // Start Video 
      return true; 
     } else if (event.getAction() == MotionEvent.ACTION_BUTTON_RELEASE) { 
      // End Video 

      return true; 
     } 
     return false; 
    } 
}); 
+0

Я думаю, что это лучший ответ здесь. Как я должен поместить это в свое программирование? У меня есть этот код прямо сейчас, когда звук воспроизводится только при отпускании кнопки: – user7323126

+0

Я имею в виду ответ ниже, что теперь является ответом. – user7323126

+0

@ user7323126, делитесь своим кодом активности, и я напишу вам, где добавить этот код. :) –

0

Это мой код:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
    public void start_recording(View view){ 
     MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.test1); 
     mediaPlayer.start(); 
    } 
} 
Смежные вопросы