java - Java 中 Intent 之间的困难 (Android Studio)

标签 java android android-studio android-intent android-mediaplayer

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

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

以下是 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();
}

最佳答案

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

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

建议 - 对于此类应用,您不希望广播在用户离开您的应用时停止。所以我建议您将服务用于娱乐目的。

关于java - Java 中 Intent 之间的困难 (Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36801469/

相关文章:

android - Fleetboard 上的 TLS 1.2

java - 当写入操作多于读取操作时,获取并发哈希集的最佳方法是什么?

java - 如何使用普通 JDBC 处理 J2EE 1.4 中的事务

java - Spring Boot中Spring Security的XML配置

android - Chain animator设置android动画

android - 使用 MutableList 时,Delegates.observable() 未收到通知

安卓工作室 || GDK 'hello word' ||导入 com.google.android.glass.app.Card ||无法解析符号 'google'

android - 运行后为什么在Flutter上出现 “Failed to execute aapt”错误?

android - android 上的 firebase 设置

java - Swing:调整 RadioButton 的大小