2010-08-26 2 views
0

Мой вопрос очень простой, я уверен. Просто я не совсем уверен, как эффективно описывать то, что я пытаюсь достичь.Как воспроизводить звук последовательно, когда кнопка нажата и остановлена ​​при отпускании?

В любом случае, у меня есть простая кнопка, я знаю, как «связывать» необработанный звуковой файл, чтобы заставить его играть. НО, что я хочу сделать, это, возможно, связать 3-секундный звук с кнопкой и просто пропустить его, пока пользователь удерживает кнопку, а затем перестает играть, когда кнопка отпускается. У кого-нибудь есть ссылки на примеры, которые они могли бы поделиться, это было бы здорово! Спасибо!

Редактировать: Спасибо Cpt.Ohlund!

Спасибо, что было определенно полезно и сделал трюк, однако я столкнулся 1 более небольшая проблема, может быть, вы могли бы мне помочь с я использую «Custom Button», как видно на http://developer.android.com/resources/tutorials/views/hello-formstuff.html

Он работал отлично, прежде чем я добавлен «прослушиватель onTouch». Кнопка теперь не использует его android: state_pressed. Он просто отображает обычный элемент, но не нажатый элемент. По крайней мере, он воспроизводит звук сейчас. Но какие-либо идеи?

ответ

2

Вы можете использовать следующее: просто измените R.raw.hit на свой собственный звуковой файл:

public class XButtonSound extends Activity implements OnTouchListener { 

private int sound; 
private SoundPool sounds; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button donePlacing = new Button(this.getApplicationContext()); 
    donePlacing.setId(1); 
    donePlacing.setText("Play"); 
    donePlacing.setOnTouchListener(this); 

    this.addContentView(donePlacing, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 


    sounds = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); 
    sound = sounds.load(this.getApplicationContext(), R.raw.hit, 1); 
} 


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

    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     System.out.println("touch"); 
     sounds.play(sound, 1, 1, 1, -1, 1); 
     break; 
    case MotionEvent.ACTION_UP: 
     System.out.println("up"); 
     sounds.autoPause(); 
     break; 
    } 

    return true; 
} 

}

+0

Спасибо, что было определенно полезно и сделал трюк, однако я столкнулся с 1 небольшой проблемой. Я использую «Пользовательскую кнопку», как показано на http://developer.android.com/resources/tutorials/views/hello-formstuff.html Он отлично работал, прежде чем добавить «прослушиватель onTouch». 't использовать его android: state_pressed Item, он просто отображает обычный элемент. Любые идеи? – brybam

+0

Ну, это потому, что onClickListener не вызывается. Измените onTouch, чтобы возвращать false вместо true, тогда также следует активировать onClick (..) и кнопка будет выглядеть «нажатой». –

+0

На самом деле простое исправление! Спасибо! – brybam