如何解决从Android Emulator播放歌曲时的静态噪音
我目前遇到一个问题,当我运行Android Studio时会产生静电噪声。当我导入SeekBar并开始为其输入代码时,就会发生这种情况。我曾尝试调试并安装新的Android Studio版本,但两者均无法正常工作。有人可以帮我吗?
这是我的playSongActivity代码:
public class PlaySongActivity extends AppCompatActivity {
private String songId = "";
private String title = "";
private String artist = "";
private String fileLink = "";
private String coverArt = "";
private String url = "";
private MediaPlayer player = null;
private static final String BASE_URL = "https://p.scdn.co/mp3-preview/";
private Button playPause = null;
private int musicPosition = 0;
TextView duration_played;
ImageView shuffleBtn;
ImageView repeatBtn;
Boolean repeatFlag = false;
Boolean shuffleFlag = false;
public SongCollection songCollection = new SongCollection();
List<Song> shuffleList = Arrays.asList(songCollection.songs);
SeekBar seekBar;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_song);
duration_played = findViewById(R.id.duration_played);
retrieveData();
displaySong();
repeatBtn = findViewById(R.id.btnRepeat);
shuffleBtn = findViewById(R.id.shuffle_btn);
playPause = findViewById(R.id.btnPlayPause);
seekBar = findViewById(R.id.seekBar);
}
private void retrieveData() {
Intent intent = getIntent();
songId = intent.getStringExtra("id");
title = intent.getStringExtra("title");
artist = intent.getStringExtra("artiste");
fileLink = intent.getStringExtra("fileLink");
coverArt = intent.getStringExtra("coverArt");
url = BASE_URL + fileLink;
}
private void displaySong() {
TextView txtTitle = findViewById(R.id.tvSongTitle);
txtTitle.setText(title);
TextView txtArtiste = findViewById(R.id.tvArtist);
txtArtiste.setText(artist);
int imageId = AppUtil.getImageIdFromDrawable(this,coverArt);
ImageView ivCoverArt = findViewById(R.id.ivCoverArt);
ivCoverArt.setImageResource(imageId);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void preparePlayer() {
player = new MediaPlayer();
try {
player.setAudioAttributes(new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
player.setDataSource(url);
player.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void playOrPauseMusic(View view) {
if (player == null) {
preparePlayer();
}
if (!player.isPlaying()) {
if (musicPosition > 0) {
player.seekTo(musicPosition);
}
UpdateSeekbBar updateSeekbBar = new UpdateSeekbBar();
seekBar.setOnSeekBarChangeListener(new
SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser) {
player.seekTo(progress);
duration_played.setText(createTimerLabel(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
preparePlayer();
player.start();
seekBar.setMax(player.getDuration());
handler.post(updateSeekbBar);
playPause.setText("PAUSE");
setTitle("Now Playing: " + title + " - " + artist);
gracefullyStopsWhenMusicEnds();
} else {
pauseMusic();
gracefullyStopsWhenMusicEnds();
}
}
private void pauseMusic() {
player.pause();
musicPosition = player.getCurrentPosition();
playPause.setText("PLAY");
}
private void gracefullyStopsWhenMusicEnds() {
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onCompletion(MediaPlayer mp) {
stopActivities();
preparePlayer();
}
});
}
private void stopActivities() {
if (player != null) {
playPause.setText("PLAY");
musicPosition = 0;
setTitle("");
player.stop();
player.release();
player = null;
}
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void playNext(View view) {
Song nextSong = songCollection.getNextSong(songId);
if (nextSong != null) {
songId = nextSong.getId();
title = nextSong.getTitle();
artist = nextSong.getArtist();
fileLink = nextSong.getFileLink();
coverArt = nextSong.getCoverArt();
url = BASE_URL + fileLink;
displaySong();
stopActivities();
playOrPauseMusic(view);
}
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void playPrev(View view) {
Song prevSong = songCollection.getPrevSong(songId);
if (prevSong != null) {
handler.removeCallbacks(playBar);
songId = prevSong.getId();
title = prevSong.getTitle();
artist = prevSong.getArtist();
fileLink = prevSong.getFileLink();
coverArt = prevSong.getCoverArt();
url = BASE_URL + fileLink;
displaySong();
stopActivities();
playOrPauseMusic(view);
}
}
Runnable playBar = new Runnable() {
@Override
public void run() {
if (player != null && player.isPlaying()) {
seekBar.setProgress(player.getCurrentPosition());
}
handler.postDelayed(this,1000);
}
};
public String createTimerLabel(int duration){
String timerLabel = "";
int min = duration /1000/60;
int sec = duration /1000 ;
timerLabel += min + ":";
if (sec<10) timerLabel += "0";
timerLabel += sec;
return timerLabel;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void repeatSong(View view) {
if (repeatFlag) {
repeatBtn.setBackgroundResource(R.drawable.repeat_icon_blue);
stopActivities();
playOrPauseMusic(view);
}
else {
repeatBtn.setBackgroundResource(R.drawable.repeat_icon_white);
}
repeatFlag = !repeatFlag;
}
public void shuffleSong(View view) {
if (shuffleFlag) {
shuffleBtn.setBackgroundResource(R.drawable.shuffle_btn_white);
songCollection = new SongCollection();
}
else {
shuffleBtn.setBackgroundResource(R.drawable.shuffle_btn_blue);
Collections.shuffle(shuffleList);
shuffleList.toArray(songCollection.songs);
}
shuffleFlag = !shuffleFlag;
}
public class UpdateSeekbBar implements Runnable {
@Override
public void run() {
seekBar.setProgress(player.getCurrentPosition());
handler.postDelayed(this,10);
}
}
}
这是我的SongCollection类代码:
public class SongCollection {
public Song[] songs = new Song[5];
public SongCollection() {
prepareSongs();
}
private void prepareSongs() {
Song Perfect = new Song("S1001","Perfect","Ed Shareen","9779493d90a47f29e4257aa45bc6146d1ee9cb26?cid=2afe87a64b0042dabf51f37318616965",4.39,"edshareen");
Song MeToo = new Song("S1002","Me too","Meghan trainor","4cb041c7f1c4eb9f5c5ea7cad9b6a11444d49956?cid=2afe87a64b0042dabf51f37318616965",3.02,"meghantrainor_me_too");
Song Moon = new Song("S1003","Moon","BTS Jin","f4d1590859b7157d448b9b2bdaa73b1f8cefa477?cid=2afe87a64b0042dabf51f37318616965",3.48,"mot7_bts");
Song Eight = new Song("S1004","Eight","IU","7b68f9603c9269cbd9b6664e7071f0564248a8f7?cid=2afe87a64b0042dabf51f37318616965",2.79,"iu_eight");
Song WhatYouWaitingFor = new Song("S1005","What you waiting for","Somi","8d14ae5e4ac68893b4e00406ea54ab8bbe6774c4?cid=2afe87a64b0042dabf51f37318616965",2.92,"somi");
songs[0] = Perfect;
songs[1] = MeToo;
songs[2] = Moon;
songs[3] = Eight;
songs[4] = WhatYouWaitingFor;
}
public Song searchById(String id) {
Song song = null;
for (int index = 0; index < songs.length; index++) {
song = songs[index];
if (song.getId().equals(id)) {
return song;
}
}
return null;
}
public Song getNextSong(String currentSongId) {
Song song = null;
for (int index = 0; index < songs.length; index++) {
String tempSongId = songs[index].getId();
if (tempSongId.equals(currentSongId) && (index < songs.length - 1)) {
song = songs[index + 1];
break;
}
}
return song;
}
public Song getPrevSong(String currentSongId) {
Song song = null;
for (int index = 0; index < songs.length; index++) {
String tempSongId = songs[index].getId();
if (tempSongId.equals(currentSongId) && (index > 0)) {
song = songs[index - 1];
break;
}
}
return song;
}
}
请让我知道是否有人需要其他信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。