我是Android Studio的初学者,我制作了一个播放和停止声音的按钮(标记为开始/停止),但声音播放完成后,该按钮不再显示start
文字
如何在播放完成后让按钮更改其文本以启动?
切换到另一个视图时如何停止声音?
我的代码:
public class insideaventador extends Activity {
MediaPlayer mysound;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.insideaventador);
mysound = MediaPlayer.create(this, R.raw.lamborghini);
}
public void startup(View v) {
Button button = (Button) v;
if (mysound == null) {
mysound = MediaPlayer.create(insideaventador.this, R.raw.lamborghini);
}
if (mysound.isPlaying()) {
mysound.pause();
((Button) v).setText("START");
} else {
mysound.start();
((Button) v).setText("STOP");
}
}
}
答案 0 :(得分:1)
MediaPlayer
提供了一个OnCompletionListener
接口,您可以实现该接口,以便在音频文件播放结束时收到通知。
然后,您可以通过setOnCompletionListener()
设置监听器。
例如
mysound.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
public void onCompletion(MediaPlayer mp){
// Perform your steps here, eg.
((Button) v).setText("START");
// (Make sure you make v final before)
}
})
答案 1 :(得分:0)
您需要重置并准备
public void startup(View v) {
Button button = (Button) v;
if (mysound == null) {
mysound = MediaPlayer.create(insideaventador.this, R.raw.lamborghini);
}
if (mysound.isPlaying()) {
mysound.pause();
((Button) v).setText("START");
} else {
mysound.reset();
mysound.prepare();
mysound.start();
((Button) v).setText("STOP");
}
}
答案 2 :(得分:0)
听到你可以得到第一个问题的答案......
https://stackoverflow.com/a/15635785/4156278
当选择其他布局或页面时,您可以停止在onPause()中播放声音。
答案 3 :(得分:0)
public class MainActivity extends Activity {
Context context = this;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp = MediaPlayer.create(context, R.raw.tone);
final Button b = (Button) findViewById(R.id.Button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
b.setText("Play");
}
else{
mp.start();
b.setText("Pause");
}
}
});
}
}