Media3 не начинает сервис переднего планаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Media3 не начинает сервис переднего плана

Сообщение Anonymous »

В моем проекте у меня есть класс аудио контроллера < /p>
class AudioController(val context: Context){
private val player = ExoPlayer.Builder(context).build()
private val _state = MutableStateFlow(PlayerState())
init{player.addListener(object : Player.Listener {...})}
private fun emitState() {//updates the _state based on player}
suspend fun setQueue(tracks: List, startIndex: Int) {
val intent = Intent(context, AudioPlayerService::class.java)
ContextCompat.startForegroundService(context, intent)

val items = tracks.map {
MediaItem.Builder()
.setMediaId("${it.id}")
.setUri(it.url)
.setMediaMetadata(...)
.build()
}
withContext(Dispatchers.Main) {
player.setMediaItems(items, startIndex, 0L)
player.prepare()
player.playWhenReady = false
emitState()
}
}
}
< /code>
и класс аудиоигры-< /p>
class AudioPlayerService : MediaLibraryService() {
var mediaLibrarySession: MediaLibrarySession? = null
var audioController = getKoin().get()
private val player: ExoPlayer by lazy { audioController.getPlayer() }
private lateinit var notificationProvider: DefaultMediaNotificationProvider
private val callback = object : MediaLibrarySession.Callback {...}
override fun onCreate() {
super.onCreate()
notificationProvider = DefaultMediaNotificationProvider.Builder(this)
.setNotificationId(NOTIFICATION_ID)
.setChannelId(NOTIFICATION_CHANNEL_ID)
.build()

setMediaNotificationProvider(notificationProvider)

mediaLibrarySession = MediaLibrarySession
.Builder(this, player, callback)
.setCustomLayout(listOf(getCorrectBookmarkButton()))
.build()
}

override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaLibrarySession? = mediaLibrarySession

override fun onDestroy() {
mediaLibrarySession?.run {
player.release()
release()
mediaLibrarySession = null
}
super.onDestroy()
}
}
< /code>
и в классе приложения я делаю канал следующим образом < /p>
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
createNotificationChannel(this)
//koin init happens here
}
}
private fun createNotificationChannel(context: Context) {
val channel = NotificationChannel(
"player_channel",
"Audio Playback",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Shows the currently playing audio"
}
val manager = getSystemService(context,NotificationManager::class.java)
manager?.createNotificationChannel(channel)
}

Проблема заключается в том, что каждый раз, когда моя модель представления использует метод AudioControllers Setqueue Аудиоплеер запускается правильно, но сбои через несколько секунд , и уведомление также не отображается
ошибка, которую я получаю, является
, и уведомление также не отображается
ошибка, которую я получаю
, и уведомление также не отображается
ошибка

и уведомление.android.app.ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{e4dbb13 u0 _._._/_._._.audio.AudioPlayerService}


Подробнее здесь: https://stackoverflow.com/questions/797 ... nd-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»