在按下按钮并在释放时停止按钮时如何使声音始终循环?

时间:2010-08-26 06:30:59

标签: java android loops audio mpmusicplayercontroller

我的问题很简单,我很确定。只是我不太确定如何有效地描述我想要实现的目标。

无论如何,我有一个简单的按钮,我知道如何“链接”原始声音文件以手动播放。但是我想要做的就是将3秒的声音连接到按钮,然后在用户按住按钮时让它循环,然后在按钮松开时停止播放。任何人都有他们可以分享的任何示例链接,这将是伟大的!谢谢!

编辑: 谢谢Cpt.Ohlund!

谢谢,这肯定是有帮助的并且做了诀窍,但是我遇到了另外一个小问题,也许你可以帮助我,我正在使用http://developer.android.com/resources/tutorials/views/hello-formstuff.html上看到的“自定义按钮”

在添加“onTouch Listener之前它工作正常。按钮现在不使用它的android:state_pressed项目它只显示正常项目而不是按下的项目。至少它现在播放声音。但是,任何想法?

1 个答案:

答案 0 :(得分: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;
}

}