Несколько сообщений, полученных LocalBroadcast Receiver Kotlin - PullRequest
0 голосов
/ 05 марта 2019

Я прочитал много ответов на проблему неоднократного получения одного и того же массажа с помощью приемника вещания.Решения в основном заключаются в том, чтобы зарегистрировать получателя в OnResume и отменить регистрацию в OnPause.Это невозможно в моем коде.У меня есть пользовательский интерфейс (мультимедийный проигрыватель) и связанная Musicservive .. все работает хорошо, за исключением этой проблемы с несколькими полученными сообщениями.Когда медиа-файл заканчивается, Musicservice отправляет сообщение «Cue Completed», получатель получает сообщение.Затем мне нужно определить, нужно ли непосредственно воспроизводить следующий носитель или дождаться нажатия кнопки.Я могу заставить его воспроизводить следующий без каких-либо проблем, однако, если я хочу, чтобы он не воспроизводил следующий музыкальный фрагмент, он продолжает получать одно и то же сообщение и пересылать до конца.некоторый код

        mp.setOnCompletionListener {


                 if (loop > 0 && loopCount<loop+1) {


                     Toast.makeText(this, "$loopCount of $loop loops", Toast.LENGTH_LONG).show()
                     getCurrentsoundPosition()
                     runCue(position)
                     Log.i("loopcount", "$loopCount ")
                     loopCount++

                 }else {
                           if(trigger=="Play-Next" || trigger=="Fade Play-Next"){
                            mpStatus = "cue_completed"
                            sendMediaPlayerStatus()}else
                           {mpStatus="Stopped"
                               sendMediaPlayerStatus()
                           }

                     Log.i("status after completion", mpStatus)
                     loopCount=0
                 }
         }

выше, в mymusicservice.

Следующее из моего пользовательского интерфейса OnCreate

    val localBroadcastManager = LocalBroadcastManager.getInstance(this)
    localBroadcastManager.registerReceiver(object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {

            // try {

            Log.i("FullScreenActivity ", "Service got intent with action: ${intent.action} and status mp ${intent.getStringExtra("status")}")

            mpStatus = intent.getStringExtra("status")

            when (mpStatus) {

                "cue_completed" -> {

                    goToNext()
                    tvStatus.clearAnimation()
                    if ( AutoPlayNext == true) {


                        btnPlayCue.callOnClick()
                    }else{

                      myMusicService?.stopCue()
                    }

                }
                "PAUSED" -> tvStatus.text = "PAUSED"
                "IS_PLAYING" -> {tvStatus.text = "PLAYING"
                    updateSeekbar()}
                "Fading Out" -> tvStatus.text = "FADING OUT"
            }




        }

    }, IntentFilter(BoundMusicService.ACTION_MEDIAPLAYER_STATUS))

Когда я запускаю код, это пример изlogcat

2019-03-04 16: 53: 43.111 1194-1235 /?I / ActivityManager: Отображается com.ktdevelopment.nigelmccullagh.qsoundkt / com.ktdevelopment.nigelmccullagh.qsoundkt.FullScreenActivity: + 225ms 2019-03-04 16: 53: 46.369 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp IS_PLAYING 2019-03-04 16: 53: 48.876 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp Fading Out 2019-03-04 16: 53: 51.791 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp cue_completed 2019-03-04 16: 53: 52.238 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status and status mp IS_PLAYING 2019-03-04 16: 53: 54.350 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp Fading Out 2019-03-04 16: 53: 54.490 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp Fading Out 2019-03-04 16: 53: 55.308 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp Fading Out 2019-03-04 16: 53: 55.503 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp Fading Out 2019-03-04 16: 53: 55.986 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp cue_completed 2019-03-04 16: 53: 56.059 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp cue_completed 2019-03-04 16: 53: 56.212 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp cue_completed 2019-03-04 16: 53: 56.245 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp cue_completed 2019-03-04 16: 53: 56.278 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp Fading Out 2019-03-04 16: 53: 56.279 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status and status mp IS_PLAYING 2019-03-04 16: 53: 56.281 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status и status mp cue_completed 2019-03-04 16: 53: 56.477 29716-29716 /?I / FullScreenActivity: служба получила намерение выполнить действие: Media Player Status and status mp Stopped

Это разочаровывает меня, остальная часть моего приложения работает нормально, но я не могу на всю жизнь разобраться с этим.Я работаю над этим в течение 3 дней.

любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 марта 2019

Вы были абсолютно правы.Я отправлял одну и ту же трансляцию не раз.Я обнаружил это в беговой дорожке, предназначенной для затухания музыки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...