繁体   English   中英

单击时将音频按钮从播放更改为暂停,反之亦然

[英]Changing audio button from play to pause when clicked and vice versa

我想要我的应用程序中的一个播放按钮,当单击该按钮时,它会播放音频并更改为暂停,而当单击暂停按钮时,音频会停止并且该按钮更改为再次播放,依此类推。 但是该按钮无法正常工作。 请帮忙。 我在下面添加我的Java代码。

public class surah extends AppCompatActivity {

    MediaPlayer mp = new MediaPlayer();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_surah);
        mp=MediaPlayer.create(surah.this, R.raw.surahkahf);


        final ImageView audio = (ImageView)findViewById(R.id.btn);

        audio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(mp.isPlaying()){
                    mp.stop();
                    audio.setBackgroundResource(R.drawable.play);
                    try {
                        mp.prepare();
                    }catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                else {
                    mp.start();
                    audio.setImageResource(R.drawable.pause);

                }
            }
        });
    }
}

首先,正如aborocz在评论中提到的那样,您可能打算暂停播放而不是停止播放,因此要使用的方法是pause() 在这种情况下,您无需再次准备MediaPlayer ,它将从恢复播放时暂停的位置开始。

其次, isPlaying()方法不适用于此目的。 有些比赛条件阻止了期望的行为。 从Android MediaPlayer文档中

请注意,在播放器引擎中,异步发生从“开始”状态到“暂停”状态的转换,反之亦然。 在对isPlaying()的调用中更新状态之前,可能需要花费一些时间,对于流式传输的内容,状态更新可能需要花费几秒钟的时间。

而是存储您自己的布尔值。

public class surah extends AppCompatActivity {

    private MediaPlayer mp;
    private boolean isMediaPlaying = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_surah);
        mp = MediaPlayer.create(surah.this, R.raw.surahkahf);

        final ImageView audio = (ImageView)findViewById(R.id.btn);

        audio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isMediaPlaying) {
                    mp.pause();
                    audio.setBackgroundResource(R.drawable.play);
                    isMediaPlaying = false;
                } else {
                    mp.start();
                    audio.setImageResource(R.drawable.pause);
                    isMediaPlaying = true;
                }
            }
        });
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM