Android 尝试在任何地方自由使用mediaplayer
因此,我正在开发一个带有json数据的在线音乐播放器应用程序。这里我使用recycelr视图来显示歌曲列表。我必须面对控制媒体播放器在另一个活动中暂停开始的问题。因此,我创建了一个新文件Audio.kt,在这个文件中,我创建了所有媒体播放器方法的伴奏对象。现在我可以在任何地方使用mediaplayer,使用音频。[方法] 这是Audio.kt文件Android 尝试在任何地方自由使用mediaplayer,android,kotlin,android-mediaplayer,Android,Kotlin,Android Mediaplayer,因此,我正在开发一个带有json数据的在线音乐播放器应用程序。这里我使用recycelr视图来显示歌曲列表。我必须面对控制媒体播放器在另一个活动中暂停开始的问题。因此,我创建了一个新文件Audio.kt,在这个文件中,我创建了所有媒体播放器方法的伴奏对象。现在我可以在任何地方使用mediaplayer,使用音频。[方法] 这是Audio.kt文件 class Audio { companion object { val mp = MediaPlayer()
class Audio {
companion object {
val mp = MediaPlayer()
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
fun loadMediaPlayer(url: String?) {
mp.setAudioAttributes(
AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build()
)
mp.setDataSource(url)
mp.prepareAsync()
mp.setOnPreparedListener {
mp.start()
MainActivity.progressBar.visibility = View.GONE
MainActivity.slidingPlayBtn.visibility = View.VISIBLE
MainActivity.slidingPlayBtn.setImageResource(R.drawable.ic_pause)
MainActivity.main_pbar.visibility = View.GONE
MainActivity.mainPlayBtn.visibility = View.VISIBLE
val duration: Long = Audio.mp.duration.toLong()
val time = kotlin.String.format(
"%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(duration),
TimeUnit.MILLISECONDS.toSeconds(duration) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
)
MainActivity.totalDur.text = time
MainActivity.seekBar.max = duration.toInt()
}
}
fun startMediaPlayer() {
mp.start()
}
fun pauseMediaPlayer() {
mp.pause()
}
fun stopMediaPlayer() {
if (mp.isPlaying) {
mp.stop()
mp.reset()
}
}
fun isNotPlaying(): Boolean {
return !mp.isPlaying
}
fun mediaCurrPos(): Long {
return mp.currentPosition.toLong()
}
fun mediaPlayerSeek(progress: Int) {
mp.seekTo(progress)
}
fun nextMediaPlayer() {
mp.setNextMediaPlayer(MediaPlayer())
}
}
}
那么现在我的问题是,这是一个好方法吗?否则我将来可能不得不面对问题
你还有别的想法吗