按下按钮,我正在播放一些音频。音频播放正常,但我想能够发送垃圾按钮,让音频播放播放播放。如果按下按钮,甚至停止播放和播放的位置。现在,当我按下按钮时,音频只会一直播放,如果我在播放音频时按下按钮,则没有任何反应。这是我的代码:
final MediaPlayer mp = MediaPlayer.create(this, R.raw.audio1);
Button play_button = (Button)this.findViewById(R.id.button1);
play_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mp.start();
}
});
答案 0 :(得分:0)
final MediaPlayer mp = MediaPlayer.create(this, R.raw.audio1);
mp.setLooping(true);
Button play_button = (Button)this.findViewById(R.id.button1);
play_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mp.start();
}
});
将此代码替换为现有代码。如果要重复音频,则必须将循环属性设置为true。
答案 1 :(得分:0)
好的 - 我希望我做对了:
您希望在每次按下按钮时播放音频剪辑,并且在下一个剪辑开始之前应该完全播放剪辑。
这就是我要做的事情:
创建一个新的整数属性。
private int i = 0;
每次按下按钮都会增加。
Button play_button = (Button)this.findViewById(R.id.button1);
play_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
IUP();
}
});
public synchronized void IUP(){
i++;
}
public synchronized void IDOWN(){
i--;
}
public synchronized int getI(){ return i; }
public void startAudio(){ mp.start(); }
public boolean isPlaying(){ return mp.isPlaying(); }
为播放器使用单独的线程。
Thread player_thread = new Thread(new Runnable(){
@Override
public void run(){
while(true){
if(getI() > 0 && !isPlaying()){
IDOWN();
startAudio();
}
}
}
}).start();
或者在MediaPlayer上使用OnCompletionListener。
告诉我这是否是你要找的。 p>
答案 2 :(得分:-1)
final MediaPlayer mp = MediaPlayer.create(this, R.raw.audio1);
Button play_button = (Button)this.findViewById(R.id.button1);
play_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(play_button.getText().toString().equals("Stop")
{
mp.stop();
play_button.setText("Play");
}
else
{
mp.start();
play_button.setText("Stop");
}
}
});