所以这是我在应用程序中播放音频文件时使用的简单代码:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
这是错误日志:
java.io.IOException: Prepare failed
at android.media.MediaPlayer._prepare(Native Method)
此错误会使应用程序冻结约10秒,并在提供mp3文件的url
返回404
(未找到(时发生。那么我该如何解决这个问题呢?
我使用了mediaPlayer.prepareAsync()
,但没有任何变化。
请尝试以下方式,以下代码在kotlin中,但您可以在java 中使用这种方式
mPlayer = MediaPlayer.create(mContext, myUri(uriAudio))
if (Build.VERSION.SDK_INT >= 21) {
val audioAttributes: AudioAttributes =
AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
mPlayer!!.setAudioAttributes(audioAttributes)
} else {
mPlayer!!.setAudioStreamType(AudioManager.STREAM_MUSIC)
}
if (mPlayer != null && !mPlayer!!.isPlaying) {
mPlayer!!.start()
}
您可以尝试以下方法:https://developer.android.com/reference/android/media/MediaPlayer#setAudioStreamType(int(
方法setAudioStreamType在API 26级中已被弃用。使用setAudioAttributes(android.media.AudioAttributes(