Я хотел бы задать вопрос о потоковой передаче http на мой аудиоплеер Android.Когда дело доходит до исполнения, это играет хорошо.Когда я нажимаю паузу и снова играю, возникает следующая ошибка:
URL-адрес получателя http://www.radioideal.net:8026/;stream/1
Сообщение об ошибке:
prepareAsync called in state 1, mPlayer(0x0)
Скажите, пожалуйста, чтоправильная последовательность для управления потоковым аудио HTTP mp3?Ниже моя работа.
Код:
class AudioActivity : AppCompatActivity() , EBookRetrieveRecordListener {
private var requestType = "audio"
private var mediaPlayer: MediaPlayer? = null
private var progressDialog: ProgressDialog? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_audio)
initSetting()
initView()
}
private fun initView() {
btn_audio_play.setOnClickListener({
if (mediaPlayer!!.isPlaying) pause() else play()
})
}
override fun onDestroy() {
super.onDestroy()
stop()
}
private fun play() {
config()
btn_audio_play!!.setImageResource(android.R.drawable.ic_media_pause)
}
private fun pause() {
mediaPlayer!!.pause()
mediaPlayer!!.reset();
btn_audio_play!!.setImageResource(android.R.drawable.ic_media_play)
}
private fun stop(){
mediaPlayer!!.stop()
mediaPlayer!!.release()
mediaPlayer = null
}
private fun config() {
try {
progressDialog = ProgressDialog(this)
progressDialog!!.setMessage(MESSAGE)
progressDialog!!.setCancelable(false)
progressDialog!!.show()
val audioBuilder = AudioAttributes.Builder()
audioBuilder.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
audioBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC)
val attribute : AudioAttributes = audioBuilder.build()
mediaPlayer!!.setAudioAttributes(attribute )
mediaPlayer!!.isLooping = true
mediaPlayer!!.setOnPreparedListener {
it.start()
progressDialog!!.dismiss()
}
mediaPlayer!!.setOnErrorListener { mp, what, extra ->
Log.i(TAG, "mp: ${mp}\nwhat: ${what}\nextra: $extra")
progressDialog!!.dismiss()
false
}
mediaPlayer!!.setOnCompletionListener {
mediaPlayer!!.release()
}
mediaPlayer!!.setOnBufferingUpdateListener { mp, percent ->
mp.start()
}
mediaPlayer!!.prepareAsync()
} catch (e : Exception){
e.message
}
}
private fun initSetting() {
EBookRetrieveRecordManager.listener = this
//config()
val url = "http://www.radioideal.net:8026/;stream/1"
mediaPlayer = MediaPlayer()
mediaPlayer!!.setDataSource(url);
}
}