Java 暂停按钮仅在短时间内对音频进行加扰
我对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
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功能(检查播放器是否暂停以启动或停止)