Java 暂停按钮仅在短时间内对音频进行加扰

Java 暂停按钮仅在短时间内对音频进行加扰,java,android,Java,Android,我对Java相当陌生,一直在开发一个应用程序,从互联网上传输实时音频。除了暂停按钮外,我所有的东西都在工作。现在它所做的只是在短时间内对音频进行加扰。我猜这与调用mediaPlayer.pause()的位置有关,但我可能错了。感谢您的时间和回复 package com.example.jacob.wutk; import android.media.AudioManager; import android.media.MediaPlayer; import android.support.v7

我对Java相当陌生,一直在开发一个应用程序,从互联网上传输实时音频。除了暂停按钮外,我所有的东西都在工作。现在它所做的只是在短时间内对音频进行加扰。我猜这与调用
mediaPlayer.pause()
的位置有关,但我可能错了。感谢您的时间和回复

package com.example.jacob.wutk;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

import java.io.IOException;

public class radio extends AppCompatActivity {

    /** Called when the user touches the button */

    public void playPauseMusic (View playPause) throws IOException {
        String url = "http://streamer.cci.utk.edu:8000/wutk-vorbis"; // your URL here
        final MediaPlayer mediaPlayer = new MediaPlayer();

        ImageButton imb = (ImageButton) findViewById(R.id.playPause);

        if (mediaPlayer.isPlaying()) {
            imb.setImageResource(R.drawable.play1);
            mediaPlayer.pause();
            return;
        } else {
            imb.setImageResource(R.drawable.pause1);
        }

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

        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.setDataSource(url);
        mediaPlayer.prepareAsync();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio);
    }
}
请尝试使用以下代码:

com.example.jacob.wutk;

        import android.media.AudioManager;
        import android.media.MediaPlayer;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;
        import android.widget.ImageButton;

        import java.io.IOException;

public class radio extends AppCompatActivity {

    private MediaPlayer mediaPlayer;
    private boolean isMediaPlayerStarted = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio);
        setMediaPlayer();
    }

    public void setMediaPlayer() {
        try {
            mediPlayer = new MediaPlayer();
            String url = "http://streamer.cci.utk.edu:8000/wutk-vorbis"; 

            ImageButton imb = (ImageButton) findViewById(R.id.playPause);

            imb.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (!isMediaPlayerStarte) {
                        mediaPlayer.prepareAsync();
                        isMediaPlayerStarted = true;
                    } else {
                        if (mediaPlayer.isPlaying()) {
                            imb.setImageResource(R.drawable.play1);
                            mediaPlayer.pause();
                        } else {
                            imb.setImageResource(R.drawable.pause1);
                            mediaPlayer.start();
                        }
                    }
                }
            });

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

            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(url);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

它工作得很好。我会接受的,但我有两个要求。1.)您能确定MediaPlayer在按下playPause之前不会启动的位置吗?2.)我是Java新手,你能解释一下你在这里做了什么吗?我编辑了我的问题。现在解释一下:我创建了一个布尔参数来检查MediaPlayer是否准备好了(准备好开始了),在创建这个ImageButton(imb)之后,我们为它设置了一个onClickListener(),并告诉侦听器,如果我们没有预付MediaPlayer的费用,就开始准备,并将布尔参数设置为true(要知道MediaPlayer已经准备好了)。然后每次单击ImageButton(imb)时,我们进入else功能(检查播放器是否暂停以启动或停止)