我做了一段時間的帶有媒體播放器的應用程式。但經過多次更新后,我意識到下載該應用程式所需的空間變得非常大。我決定改變方法,讓播放器通過互聯網的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)。
});
uj5u.com熱心網友回復:
請嘗試下面的代碼,通過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")
如果你的目標是26級或以上的API,那么b setAudioStreamType()就會被廢棄。所以試試下面的代碼:
/java
mediaPlayer.setAudioAttributes(
新AudioAttributes
.Builder()
.setContentType( AudioAttributes.CONTENT_TYPE_MUSIC)
.build())。
/Kotlin
mediaPlayer.setAudioAttributes(
AudioAttributes.Builder()
.setContentType( AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
)
注意:在manifest.xml檔案中添加Internet權限
<uses-permission android:name="android.permission.internet" />
最后但并非最不重要的是,你必須等待音樂的播放,因為它是從URL中播放音頻,所以需要時間,也取決于用戶的網路速度
。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/319561.html
標籤:
