1

so, I am developing a online music player app with json data. here i am using recycelr view to show list of song. I have to face problem in controlling the media player to pause start in another activity. so I create a new file Audio.kt in this file i have create companion object with all the media player methods. And Now I can use mediaplayer anywhere using Audio.[methods]

here is the Audio.kt file

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())
        }

    }
}

so Now my Question, is this good approach? or I could have to face problems in future

have you any other idea to do this?

Zoe
  • 27,060
  • 21
  • 118
  • 148
Synonian_raj
  • 154
  • 1
  • 13

0 Answers0