Служба MediaPlayer не (пере) запускается - PullRequest
0 голосов
/ 02 июня 2019

Я использую MediaPlayer в сервисе, который должен воспроизводиться только при открытии определенных фрагментов.Он должен остановить / приостановить воспроизведение, когда нажата домашняя кнопка.

Внутри этих фрагментов у меня есть кнопка, которая перезагружает тот же фрагмент, но с различными активированными / деактивированными кнопками.Когда эта кнопка нажата, медиаплеер останавливается и не запускается снова, когда фрагмент создается заново.Я не могу понять, почему он не запускается снова.

Кнопка выглядит так:

nextbutton.setOnClickListener {
    FullscreenActivity.level.levelSelection(FullscreenActivity.makeLevel.nextlevelsetup)
    NavHostFragment.findNavController(fragment5).navigate(R.id.action_global_learningmode)
        }

Во фрагменте onStop () я вызываю это:

        var sIntent = Intent(mContext, BordunService::class.java)
        sIntent.putExtra("Pause", "Ein")
        activity?.startService(sIntent)

и в его onResume () я играю снова:

    var sIntent = Intent(mContext, BordunService::class.java)
    sIntent.putExtra("Play", "Ein")
    activity?.startService(sIntent)

Класс обслуживания такой:

open class BordunService : Service() {

private lateinit var mPlayer: MediaPlayer
private var mLength = 0

override fun onBind(intent: Intent): IBinder? {
    return null
}

override fun onCreate() {
    mPlayer = MediaPlayer.create(this, R.raw.accordeon_tief)  
}

override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {

if (intent.hasExtra("Play")) {
        if (mLength != 0) {
                mPlayer.seekTo(mLength)
                mPlayer.start()
          } else {
        playBordun()
    }
}

if (intent.hasExtra("Pause")) {
    mLength = mPlayer.currentPosition
    mPlayer.pause()
}

if (intent.hasExtra("Stop")) {
    mPlayer.stop()
    mPlayer.release()
    stopSelf()
}
    return START_NOT_STICKY
    }

override fun onDestroy() {
    stopSelf()
}

private fun playBordun() {
                        fun playMPlayer() {
mPlayer.setOnCompletionListener(object: MediaPlayer.OnCompletionListener  {
                override fun onCompletion(p0: MediaPlayer?) {
                    println("completem")
                    selectMBordun()
                }
            })
            mPlayer.setOnPreparedListener(object:MediaPlayer.OnPreparedListener {
                override fun onPrepared(p0: MediaPlayer?) {
                    println("preparedm")
                    mPlayer.start()
                }
            })
        } GlobalScope.launch {
            playMPlayer()
        }
    }

fun selectMBordun() {
    println("selectionstarted")
    mPlayer.release()
    val randomGenerator = Random()
    val bordunInt = randomGenerator.nextInt(3) + 1
    when (bordunInt) {
        1 -> {
            mPlayer = MediaPlayer.create(this, R.raw.accordeon_tief)
            playM()
        }
        2 -> {
            mPlayer = MediaPlayer.create(this, R.raw.cello)
            playM()
        }
        3 -> {
            mPlayer = MediaPlayer.create(this, R.raw.tuba)
            playM()
        }
    }
}
fun playM() {
    println("playstartedM")
    mPlayer.setOnPreparedListener(object:MediaPlayer.OnPreparedListener {
        override fun onPrepared(p0: MediaPlayer?) {
            println("preparedplayerM")
            mPlayer.start()
        }
    })


    mPlayer.setOnCompletionListener(object: MediaPlayer.OnCompletionListener  {
        override fun onCompletion(p0: MediaPlayer?) {
            println("completeplayerM")
            selectMBordun()
        }
    })
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...