如何让媒体播放器播放带有URL链接的音乐?



我制作了一个带有媒体播放器的应用程序。但经过多次更新后,我意识到下载应用所需的空间变得非常大。我决定改变方法,让玩家从URL链接与互联网一起播放音乐,但我不知道如何管理。我想我必须设置mediaplayer。setDataSource,然后放入链接。但在那之后,它就不能用我的代码工作了。有人知道如何转换我的代码工作在这个方法吗?

我当前代码的一部分:

mediaPlayer = MediaPlayer.create(this,R.raw.storm);
runnable = new Runnable() {
@Override
public void run() {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
handler.postDelayed(this,500);
}
};
int duration = mediaPlayer.getDuration();
String sDuration = convertFormat(duration);
playerDuration.setText(sDuration);
btPlay.setOnClickListener(v -> {
mediaPlayer.start();
seekBar.setMax(mediaPlayer.getDuration());
handler.postDelayed(runnable, 0);
btPlay.setVisibility(View.GONE);
btPause.setVisibility(View.VISIBLE);
});
btPause.setOnClickListener(v -> {
mediaPlayer.pause();
btPlay.setVisibility(View.VISIBLE);
btPause.setVisibility(View.GONE);
handler.removeCallbacks(runnable);
});

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
if (b) {
mediaPlayer.seekTo((int) progress);
}
playerPosition.setText(convertFormat(mediaPlayer.getCurrentPosition()));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
mediaPlayer.setOnCompletionListener(mp -> {
btPause.setVisibility((View.GONE));
btPlay.setVisibility(View.VISIBLE);
mediaPlayer.seekTo(0);
});

}

请尝试下面的代码通过URL播放音乐

Kotlin:

val mediaPlayer = MediaPlayer()
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)
try {
mediaPlayer.setDataSource(yourSongUrl)
mediaPlayer.prepare()
mediaPlayer.start()
} catch (e: IOException) {
e.printStackTrace()
}
Log.v(TAG,"Music is streaming")

Java:

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(yourSongUrl);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
Log.v(TAG,"Music is streaming")

如果您的目标API级别为26或更高,则不推荐使用setAudioStreamType()。所以试试下面的代码:

//java
mediaPlayer.setAudioAttributes(
new AudioAttributes
.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
//Kotlin
mediaPlayer.setAudioAttributes(
AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
)

注:在manifest.xml文件中增加上网权限

<uses-permission android:name="android.permission.INTERNET" />

最后但并非最不重要的是,你必须等待音乐播放,因为它从URL播放音频,所以它需要时间,也取决于用户的互联网速度

相关内容

  • 没有找到相关文章

最新更新