0

我敢肯定,我的问题是一个非常简单的问题。只是我不太确定如何有效地描述我想要实现的目标。

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

编辑:谢谢Cpt.Ohlund!

谢谢,这绝对有帮助并且成功了,但是我又遇到了 1 个小问题,也许你可以帮助我解决我正在使用的“自定义按钮”,如http://developer.android.com/resources/tutorials/意见/你好-formstuff.html

在我添加“onTouch 侦听器”之前它工作正常。按钮现在不使用它的 android:state_pressed 项目它只显示正常项目而不是按下的项目。至少它现在播放声音。但是,有什么想法吗?

4

1 回答 1

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;
}

}

于 2010-08-26T07:01:54.730 回答