音频播放完成后如何更改按钮文字?

时间:2015-07-14 11:07:02

标签: android audio

我是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");
        }

    }

}

4 个答案:

答案 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");
                    }
            }
        });

    }

}