Ошибка в приложении ANDROID NATIVE JETPACK COMPOSE при использовании функции MEDIA3.Android

Форум для тех, кто программирует под Android
Ответить
Гость
 Ошибка в приложении ANDROID NATIVE JETPACK COMPOSE при использовании функции MEDIA3.

Сообщение Гость »


Я получаю следующий журнал ошибок для своего кода, который размещен в этом репозитории GITHUB LINK в «Branch_Secondary»:

ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное Процесс: com.aarav.shesaswiftieee, PID: 14300 java.lang.RuntimeException: java.lang.reflect.IndictionTargetException на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:562) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) Вызвано: java.lang.reflect.IndictionTargetException. в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) Вызвано: java.util.concurrent.ExecutionException: java.lang.SecurityException: сеанс отклонил запрос на соединение. по адресу com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:588) на com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:547) на com.aarav.shesaswiftieee.player.service.MusicPlaybackController.getMediaController(MusicPlaybackController.kt:25) на com.aarav.shesaswiftieee.player.service.MusicPlaybackController.controllerListener(MusicPlaybackController.kt:46) на com.aarav.shesaswiftieee.player.service.MusicPlaybackController._init_$lambda$0(MusicPlaybackController.kt:42) на com.aarav.shesaswiftieee.player.service.MusicPlaybackController.$r8$lambda$FF1CSXulRYlFH84wuKs76FsdpeE (неизвестный источник: 0) на com.aarav.shesaswiftieee.player.service.MusicPlaybackController$$ExternalSyntheticLambda0.run (неизвестный источник: 2) в com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31) на com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1270) на com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:1038) в com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:808) в androidx.media3.session.MediaControllerHolder.maybeSetException (MediaControllerHolder.java:67) в androidx.media3.session.MediaControllerHolder.onRejected(MediaControllerHolder.java:57) в androidx.media3.session.MediaController.release(MediaController.java:530) в androidx.media3.session.MediaControllerImplBase$$ExternalSyntheticLambda41.run (неизвестный источник: 2) в androidx.media3.common.util.Util.postOrRun (Util.java:752) в androidx.media3.session.MediaController.runOnApplicationLooper(MediaController.java:1926) в androidx.media3.session.MediaControllerStub.lambda$onDisconnected$1(MediaControllerStub.java:96) в androidx.media3.session.MediaControllerStub$$ExternalSyntheticLambda4.run (неизвестный источник: 0) в androidx.media3.session.MediaControllerStub.lambda$dispatchControllerTaskOnHandler$12(MediaControllerStub.java:310) в androidx.media3.session.MediaControllerStub$$ExternalSyntheticLambda13.run (неизвестный источник: 4) в androidx.media3.common.util.Util.postOrRun (Util.java:752) в androidx.media3.session.MediaControllerStub.dispatchControllerTaskOnHandler(MediaControllerStub.java:302) в androidx.media3.session.MediaControllerStub.onDisconnected(MediaControllerStub.java:94) в androidx.media3.session.MediaSessionService$MediaSessionServiceStub.lambda$connect$0$androidx-media3-session-MediaSessionService$MediaSessionServiceStub(MediaSessionService.java:729) в androidx.media3.session.MediaSessionService$MediaSessionServiceStub$$ExternalSyntheticLambda0.run (неизвестный источник: 10) в android.os.Handler.handleCallback(Handler.java:958) в android.os.Handler.dispatchMessage(Handler.java:99) в android.os.Looper.loopOnce(Looper.java:205) в android.os.Looper.loop(Looper.java:294) в android.app.ActivityThread.main(ActivityThread.java:8177) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) Вызвано: java.lang.SecurityException: Сессия отклонила запрос на соединение. в androidx.media3.session.MediaControllerHolder.maybeSetException (MediaControllerHolder.java:67) в androidx.media3.session.MediaControllerHolder.onRejected(MediaControllerHolder.java:57) в androidx.media3.session.MediaController.release(MediaController.java:530) в androidx.media3.session.MediaControllerImplBase$$ExternalSyntheticLambda41.run (неизвестный источник: 2) в androidx.media3.common.util.Util.postOrRun (Util.java:752) в androidx.media3.session.MediaController.runOnApplicationLooper(MediaController.java:1926) в androidx.media3.session.MediaControllerStub.lambda$onDisconnected$1(MediaControllerStub.java:96) в androidx.media3.session.MediaControllerStub$$ExternalSyntheticLambda4.run (неизвестный источник: 0) в androidx.media3.session.MediaControllerStub.lambda$dispatchControllerTaskOnHandler$12(MediaControllerStub.java:310) в androidx.media3.session.MediaControllerStub$$ExternalSyntheticLambda13.run (неизвестный источник: 4) в androidx.media3.common.util.Util.postOrRun (Util.java:752) в androidx.media3.session.MediaControllerStub.dispatchControllerTaskOnHandler(MediaControllerStub.java:302) в androidx.media3.session.MediaControllerStub.onDisconnected(MediaControllerStub.java:94) в androidx.media3.session.MediaSessionService$MediaSessionServiceStub.lambda$connect$0$androidx-media3-session-MediaSessionService$MediaSessionServiceStub(MediaSessionService.java:729) в androidx.media3.session.MediaSessionService$MediaSessionServiceStub$$ExternalSyntheticLambda0.run (неизвестный источник: 10) в android.os.Handler.handleCallback(Handler.java:958) в android.os.Handler.dispatchMessage(Handler.java:99) в android.os.Looper.loopOnce(Looper.java:205) в android.os.Looper.loop(Looper.java:294) в android.app.ActivityThread.main(ActivityThread.java:8177) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) Это мой класс MusicPlaybackController, в котором, как я полагаю, происходит сбой:

пакет com.aarav.shesaswiftieee.player.service импортировать android.content.ComponentName импортировать android.content.Context импортировать android.net.Uri импортировать androidx.media3.common.MediaItem импортировать androidx.media3.common.MediaMetadata импортировать androidx.media3.common.Player импортировать androidx.media3.session.MediaController импортировать androidx.media3.session.SessionToken импортировать com.aarav.shesaswiftieee.data.PlayerState импортировать com.aarav.shesaswiftieee.data.SWIFT импортировать com.aarav.shesaswiftieee.data.toMusic импортировать com.aarav.shesaswiftieee.player.controller.PlaybackController импортировать com.google.common.util.concurrent.ListenableFuture импортировать com.google.common.util.concurrent.MoreExecutors импортировать javax.inject.Inject класс MusicPlaybackController @Inject конструктор (контекст: Контекст): PlaybackController { частная переменная mediaControllerFuture: ListenableFuture частный вал mediaController: MediaController? get() = если (mediaControllerFuture.isDone) mediaControllerFuture.get() еще ноль переопределить var mediaControllerCallback: (( PlayerState: PlayerState, текущаяМузыка: SWIFT?, текущая позиция: Длинная, TotalDuration: Длинный, isShuffleEnabled: логическое значение, isRepeatOneEnabled: логическое значение ) -> Единица)? "=" нулевой в этом { вал sessionToken = SessionToken(контекст, ComponentName(context, MusicPlaybackService::class.java)) mediaControllerFuture = MediaController.Builder(context, sessionToken).buildAsync() mediaControllerFuture.addListener({controllerListener() }, MoreExecutors.directExecutor()) } частный забавный контроллерListener() { mediaController?.addListener(объект: Player.Listener { переопределить fun onEvents(player: Player, event: Player.Events) { super.onEvents(игрок, события) с (игроком) { mediaControllerCallback?.invoke( воспроизведенияState.toPlayerState(isPlaying), currentMediaItem?.toMusic(), currentPosition.coerceAtLeast(0L), длительность.coerceAtLeast(0L), случайный режим включен, повторный режим == Player.REPEAT_MODE_ONE ) } } }) } личное развлечение Int.toPlayerState(isPlaying: Boolean) = когда (это) { Player.STATE_IDLE -> PlayerState.STOPPED Player.STATE_ENDED -> PlayerState.STOPPED еще -> if (isPlaying) PlayerState.PLAYING else PlayerState.PAUSED } переопределить fun addMediaItems(musics: List) { val mediaItems = musics.map { MediaItem.Builder().setMediaId(it.songURL.toString()).setUri(it.songURL) .setMediaMetadata( МедиаМетаданные.Builder() .setTitle(it.title) .setArtist(it.singer) .setArtworkUri(Uri.parse(it.imageURL)) .setAlbumTitle(it.album) .setTrackNumber(it.mediaID?.toInt()) .строить() ) .строить() } mediaController?.setMediaItems(mediaItems) } переопределить fun play(mediaItemIndex: Int) { медиаконтроллер?.apply { искатьToDefaultPosition (mediaItemIndex) playWhenReady = правда подготовить() } } переопределить забавное резюме() { медиаконтроллер?.play() } переопределить забавную паузу() { медиаконтроллер?.пауза() } переопределить fun seekTo(position: Long) { mediaController?.seekTo(позиция) } переопределить удовольствие SkipNext() { медиаконтроллер?.seekToNext() } переопределить удовольствие SkipPrevious() { медиаконтроллер?.seekToPrevious() } переопределить удовольствие setShuffleModeEnabled(isEnabled: Boolean) { mediaController?.shuffleModeEnabled = isEnabled } переопределить удовольствие setRepeatOneEnabled(isEnabled: Boolean) { mediaController?.repeatMode = if (isEnabled) { Плеер.REPEAT_MODE_ONE } еще { Плеер.REPEAT_MODE_OFF } } переопределить удовольствие getCurrentPosition(): Long = mediaController?.currentPosition ?: 0L переопределить удовольствие уничтожить() { MediaController.releaseFuture(mediaControllerFuture) mediaControllerCallback = ноль } } вот класс MusicPlaybackService:

пакет com.aarav.shesaswiftieee.player.service импортировать androidx.media3.common.AudioAttributes импортировать androidx.media3.common.C импортировать androidx.media3.common.MediaItem импортировать androidx.media3.exoplayer.ExoPlayer импортировать androidx.media3.session.MediaSession импортировать androidx.media3.session.MediaSessionService импортировать com.google.common.util.concurrent.Futures импортировать com.google.common.util.concurrent.ListenableFuture класс MusicPlaybackService : MediaSessionService() { частный вар mediaSession: MediaSession? = ноль частный lateinit var exoPlayer: ExoPlayer частный val audioAttributes = AudioAttributes.Builder().setContentType(C.AUDIO_CONTENT_TYPE_MUSIC).setUsage(C.USAGE_MEDIA) .строить() переопределить удовольствие onCreate() { супер.onCreate() exoPlayer = ExoPlayer.Builder(это) .setAudioAttributes(audioAttributes, true) .setHandleAudioBecomingNoisy(true).build() mediaSession = MediaSession.Builder(this, exoPlayer) .setCallback(MediaSessionCallback()) .строить() } переопределить удовольствие onDestroy() { mediaSession?.run { exoPlayer.release() выпускать() медиасессия = ноль } супер.onDestroy() } переопределить удовольствие onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaSession? = ноль частный внутренний класс MediaSessionCallback: MediaSession.Callback { переопределить удовольствие onAddMediaItems( медиасессия: Медиасессия, контроллер: MediaSession.ControllerInfo, mediaItems: MutableList ): ListenableFuture { val updateMediaItems = mediaItems.map { it.buildUpon().setUri(it.mediaId).build() }.toMutableList() return Futures.immediateFuture(updatedMediaItems) } } } а вот интерфейс PlaybackController:

пакет com.aarav.shesaswiftieee.player.controller импортировать com.aarav.shesaswiftieee.data.PlayerState импортировать com.aarav.shesaswiftieee.data.SWIFT интерфейс PlaybackController { вар mediaControllerCallback: (( playerState: PlayerState, currentMusic: SWIFT?, currentPosition: Long, totalDuration: Long, isShuffleEnabled: Boolean, isRepeatOneEnabled: Boolean ) -> Единица)? весело addMediaItems (музыка: List) веселая игра (mediaItemIndex: Int) интересное резюме() веселая пауза() fun seekTo(позиция: длинная) весело пропустить следующий() весело пропуститьПредыдущий() весело setShuffleModeEnabled(isEnabled:Boolean) забавный setRepeatOneEnabled(isEnabled:Boolean) весело getCurrentPosition():Long весело уничтожить() } Я попытался просмотреть документацию, попытаться проанализировать и устранить сбой, используя все свое остроумие, которое у меня осталось за последние три месяца. Было бы очень полезно, если бы кто-нибудь помог мне с этим.
Ответить

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

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

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

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

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