Skip to content

Commit

Permalink
chore(metadata): Handle more metadata types (#89)
Browse files Browse the repository at this point in the history
  • Loading branch information
dcvz authored Aug 15, 2023
1 parent 90d15f4 commit 35446d7
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 216 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,11 @@ class MainActivity : ComponentActivity() {
artwork = "https://rntp.dev/example/smooth-jazz-24-7.jpeg",
artist = "New York, NY",
),
DefaultAudioItem(
"https://traffic.libsyn.com/atpfm/atp545.mp3",
title = "Chapters",
artwork = "https://random.imagecdn.app/800/800?dummy=1",
),
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@ class EventHolder internal constructor(private val notificationEventHolder: Noti
val onAudioFocusChanged
get() = playerEventHolder.onAudioFocusChanged

val onPlaybackMetadata
get() = playerEventHolder.onPlaybackMetadata
val onCommonMetadata
get() = playerEventHolder.onCommonMetadata

val onTimedMetadata
get() = playerEventHolder.onTimedMetadata

val onPlayerActionTriggeredExternally
get() = playerEventHolder.onPlayerActionTriggeredExternally
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.doublesymmetry.kotlinaudio.event

import com.doublesymmetry.kotlinaudio.models.*
import com.google.android.exoplayer2.MediaMetadata
import com.google.android.exoplayer2.metadata.Metadata
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
Expand Down Expand Up @@ -42,8 +44,11 @@ class PlayerEventHolder {
private var _onAudioFocusChanged = MutableSharedFlow<FocusChangeData>(1)
var onAudioFocusChanged = _onAudioFocusChanged.asSharedFlow()

private var _onPlaybackMetadata = MutableSharedFlow<PlaybackMetadata>(1)
var onPlaybackMetadata = _onPlaybackMetadata.asSharedFlow()
private var _onCommonMetadata = MutableSharedFlow<MediaMetadata>(1)
var onCommonMetadata = _onCommonMetadata.asSharedFlow()

private var _onTimedMetadata = MutableSharedFlow<Metadata>(1)
var onTimedMetadata = _onTimedMetadata.asSharedFlow()

private var _onPlayerActionTriggeredExternally = MutableSharedFlow<MediaSessionCallback>()

Expand Down Expand Up @@ -92,9 +97,15 @@ class PlayerEventHolder {
}
}

internal fun updateOnPlaybackMetadata(metadata: PlaybackMetadata) {
internal fun updateOnCommonMetadata(metadata: MediaMetadata) {
coroutineScope.launch {
_onCommonMetadata.emit(metadata)
}
}

internal fun updateOnTimedMetadata(metadata: Metadata) {
coroutineScope.launch {
_onPlaybackMetadata.emit(metadata)
_onTimedMetadata.emit(metadata)
}
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import com.doublesymmetry.kotlinaudio.models.MediaSessionCallback
import com.doublesymmetry.kotlinaudio.models.MediaType
import com.doublesymmetry.kotlinaudio.models.PlayWhenReadyChangeData
import com.doublesymmetry.kotlinaudio.models.PlaybackError
import com.doublesymmetry.kotlinaudio.models.PlaybackMetadata
import com.doublesymmetry.kotlinaudio.models.PlayerConfig
import com.doublesymmetry.kotlinaudio.models.PlayerOptions
import com.doublesymmetry.kotlinaudio.models.PositionChangedReason
Expand All @@ -50,6 +49,7 @@ import com.google.android.exoplayer2.DefaultLoadControl.DEFAULT_MIN_BUFFER_MS
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.ForwardingPlayer
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.MediaMetadata
import com.google.android.exoplayer2.PlaybackException
import com.google.android.exoplayer2.Player
import com.google.android.exoplayer2.Player.Listener
Expand Down Expand Up @@ -590,24 +590,19 @@ abstract class BaseAudioPlayer internal constructor(

companion object {
const val APPLICATION_NAME = "react-native-track-player"
const val ANDROID_NOTIFICATION_UPDATE_THROTTLE_INTERVAL = 300L
}

inner class PlayerListener : Listener {
/**
* Called when there is metadata associated with the current playback time.
*/
override fun onMetadata(metadata: Metadata) {
PlaybackMetadata.fromId3Metadata(metadata)
?.let { playerEventHolder.updateOnPlaybackMetadata(it) }
PlaybackMetadata.fromIcy(metadata)
?.let { playerEventHolder.updateOnPlaybackMetadata(it) }
PlaybackMetadata.fromVorbisComment(metadata)
?.let { playerEventHolder.updateOnPlaybackMetadata(it) }
PlaybackMetadata.fromQuickTime(metadata)
?.let { playerEventHolder.updateOnPlaybackMetadata(it) }
playerEventHolder.updateOnTimedMetadata(metadata)
}

override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
playerEventHolder.updateOnCommonMetadata(mediaMetadata)
}

/**
* A position discontinuity occurs when the playing period changes, the playback position
Expand Down

0 comments on commit 35446d7

Please sign in to comment.