service: implement onGetItem

Should round out the rest of the MediaSession interface I need. Now
just have to hook up to Android Auto.
This commit is contained in:
Alexander Capehart 2024-04-09 22:44:09 -06:00
parent 48275c4698
commit 05101c0e08
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47

View file

@ -737,7 +737,6 @@ class AuxioService :
.add(SessionCommand(ACTION_INVERT_SHUFFLE, Bundle.EMPTY)) .add(SessionCommand(ACTION_INVERT_SHUFFLE, Bundle.EMPTY))
.add(SessionCommand(ACTION_EXIT, Bundle.EMPTY)) .add(SessionCommand(ACTION_EXIT, Bundle.EMPTY))
.build() .build()
logD(controller)
return ConnectionResult.AcceptedResultBuilder(session) return ConnectionResult.AcceptedResultBuilder(session)
.setAvailableSessionCommands(sessionCommands) .setAvailableSessionCommands(sessionCommands)
.build() .build()
@ -757,8 +756,30 @@ class AuxioService :
browser: MediaSession.ControllerInfo, browser: MediaSession.ControllerInfo,
mediaId: String mediaId: String
): ListenableFuture<LibraryResult<MediaItem>> { ): ListenableFuture<LibraryResult<MediaItem>> {
// TODO val music =
return super.onGetItem(session, browser, mediaId) when (val uid = ExternalUID.fromString(mediaId)) {
is ExternalUID.Category ->
return Futures.immediateFuture(
LibraryResult.ofItem(uid.toMediaItem(this), null))
is ExternalUID.Single ->
musicRepository.find(uid.uid)?.let { musicRepository.find(it.uid) }
is ExternalUID.Joined ->
musicRepository.find(uid.childUid)?.let { musicRepository.find(it.uid) }
null -> null
}
?: return Futures.immediateFuture(
LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE))
val mediaItem =
when (music) {
is Album -> music.toMediaItem(this, null)
is Artist -> music.toMediaItem(this, null)
is Genre -> music.toMediaItem(this)
is Playlist -> music.toMediaItem(this)
is Song -> music.toMediaItem(this, null)
}
return Futures.immediateFuture(LibraryResult.ofItem(mediaItem, null))
} }
override fun onGetChildren( override fun onGetChildren(