簡體   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