** Использование Case: **
Tracks из плейлистов не имеет медиаури (ссылка на фактическую .mp3). Мы обязаны получить список воспроизведения (скажем, с 30 треками), а затем принести URL для каждого данного трека. Проблема заключается в том, что полученный URL -адрес действителен всего в течение 2 минут. через поток) состояние игрока, и когда State_ed_ed, он получает URL -адрес следующего трека и воспроизводит его (mediaController.setMediaItems> Prepare ()> play ()) < /p>
Проблема: < /strong>
Когда приложение находится в фоновом режиме (экраны), а трек заканчивается, новый трек начинает играть Обновление. < /p>
Код: Выделить всё
Failed to start foreground android.app.ForegroundServiceStartNotAllowedException: Service.startForeground() not allowed due to mAllowStartForeground false: service 'APPNAME.media.MediaServiceМне не хватает чего -то очевидного, или Media3 все еще взволнован, чтобы справиться с этими случаями, когда нам нужно получить медиаури по требованию
MedialiabraryService правильно устанавливается с данными разрешениями: < /p>
Код: Выделить всё
...
< /code>
Это функция, которая вызывается для воспроизведения контента: < /p>
private fun playAppPlaylist(startAtIndex: Int = 0) {
val browser = this.browser ?: return
val items = browser.getChildren(
Catalog.AppPlaylist.path, 0, Int.MAX_VALUE, null
)
items.addListener({
val result = items.get()
val children = result.value!!
browser.setMediaItems(children)
browser.prepare()
if (startAtIndex != 0) browser.seekTo(startAtIndex, 0)
else browser.seekToDefaultPosition()
browser.play()
}, MoreExecutors.directExecutor())
}
< /code>
похоже на вызов browser.play () < /code>, когда приложение не на переднем плане запускает уведомление, которое вызывает ошибку.
Я пытался думать о Решения, где я не использую .play (), но controller.replacemediaitem () Подробнее здесь: https://stackoverflow.com/questions/778 ... cestartnot
Мобильная версия