【问题标题】:Difficulty between intents in Java (Android Studio)Java中意图之间的困难(Android Studio)
【发布时间】:2016-08-16 12:51:40
【问题描述】:

我是一名初学者,我首先创建了一个有很多电台的广播应用,但我遇到了一个问题。

当我为收音机点击“播放”时,它开始播放,然后我回到先前的活动(电台列表),当我再次回到正在播放的同一个收音机并点击“暂停”时,它会扩散“不”玩”。 (我做了一个祝酒词,这样当我在收音机未播放时点击“暂停”时,它会扩散“未播放”)但收音机仍在“播放”。

这是 2 个按钮(播放和暂停)的代码:

btnPlayMFM.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        if (isOnline() == true) {
            if (isPlaying() == false) {

                    Toast t = Toast.makeText(MosaiqueFM.this, "Loading \nPlease Wait", 10000);
                    t.show();

                    try {
                        mediaPlayer.reset();
                        mediaPlayer.setDataSource(stream_url);
                        mediaPlayer.prepareAsync();

                        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            @Override
                            public void onPrepared(MediaPlayer mp) {
                                mp.start();
                            }
                        });

                    } catch (IOException e) {
                        e.printStackTrace();
                    }


                } else if (isPlaying() == true) {
                    Toast t2 = Toast.makeText(MosaiqueFM.this, "Playing", 2000);
                    t2.show();
                }
            }
            if (isOnline() == false){
                Toast t = Toast.makeText(MosaiqueFM.this, "Internet Connection Required", 3000);
                t.show();
            }
        }

    });

    btnPauseMFM.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isPlaying() == true) {
                mediaPlayer.stop();
            } else if (isPlaying() == false){
                Toast t = Toast.makeText(MosaiqueFM.this, "Not Playing", 2000);
                t.show();
            }
        }
    });

public boolean isPlaying()  { 
    return(mediaPlayer != null && mediaPlayer.isPlaying());
}

public boolean isOnline() {
    cm = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

【问题讨论】:

  • 您好,我已经编辑了您的问题以使其更具可读性,并且我注意到您可能有一个错误。在执行btnPauseMFM.setOnClickListener 之前,您不会关闭btnPlayMFM.setOnClickListener(,因此您在为播放按钮设置侦听器的部分内设置了暂停按钮的侦听器。
  • 另外,请阅读this guide 了解如何提出一个好问题,因为它会介绍一些必要的细节以使问题成为一个好问题。我注意到的是你的问题的标题。看起来您的标题并没有解释您的问题,而是解释了您发布问题的原因。确保您的标题尽可能详细地说明您的具体问题。

标签: java android android-studio android-intent radio


【解决方案1】:

如果您有两个活动 - 一个显示电台列表,另一个用于播放/暂停特定广播电台,那么显然当您离开第二个活动时,您的活动将被销毁,mediaPlayer 将变为空,因此,当你回来时,isPlaying() 将是错误的。 这就是为什么你会得到这个Toast-

Toast t = Toast.makeText(MosaiqueFM.this, "Not Playing", 2000);

建议 - 对于这类应用,您不希望收音机在用户离开您的应用时停止。所以我建议你将服务用于游戏目的。

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多