Skip to content

Commit

Permalink
Merge pull request #274 from boostcampwm2023/android/feature/122
Browse files Browse the repository at this point in the history
MediaSession 을 이용한 Media Control Player UI
  • Loading branch information
2taezeat authored Dec 6, 2023
2 parents 370ef9e + a100d11 commit d7a8ce0
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 11 deletions.
2 changes: 1 addition & 1 deletion android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
android:exported="true" />

<service
android:name=".mediacontrol.PlaybackService"
android:name=".mediasession.PlaybackService"
android:exported="true"
android:foregroundServiceType="mediaPlayback">
<intent-filter>
Expand Down
10 changes: 5 additions & 5 deletions android/app/src/main/java/com/ohdodok/catchytape/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@ import com.ohdodok.catchytape.databinding.ActivityMainBinding
import com.ohdodok.catchytape.feature.player.PlayerListener
import com.ohdodok.catchytape.feature.player.PlayerViewModel
import com.ohdodok.catchytape.feature.player.millisecondsPerSecond
import com.ohdodok.catchytape.feature.player.moveNextMedia
import com.ohdodok.catchytape.feature.player.movePreviousMedia
import com.ohdodok.catchytape.feature.player.navigateToPlayer
import com.ohdodok.catchytape.mediacontrol.PlaybackService
import com.ohdodok.catchytape.mediasession.PlaybackService
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.channels.consumeEach
import kotlinx.coroutines.delay
Expand Down Expand Up @@ -168,15 +170,13 @@ class MainActivity : AppCompatActivity() {

private fun setupPreviousButton() {
binding.pcvController.setOnPreviousButtonClick {
player.seekToPreviousMediaItem()
player.play()
player.movePreviousMedia()
}
}

private fun setupNextButton() {
binding.pcvController.setOnNextButtonClick {
player.seekToNextMediaItem()
player.play()
player.moveNextMedia()
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ohdodok.catchytape.mediacontrol
package com.ohdodok.catchytape.mediasession

import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.session.MediaSession
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,11 @@ class PlayerFragment : BaseFragment<FragmentPlayerBinding>(R.layout.fragment_pla
}

binding.btnNext.setOnClickListener {
player.seekToNextMediaItem()
player.play()
player.moveNextMedia()
}

binding.btnPrevious.setOnClickListener {
player.seekToPreviousMediaItem()
player.play()
player.movePreviousMedia()
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.ohdodok.catchytape.feature.player

import androidx.core.net.toUri
import androidx.media3.common.MediaItem
import androidx.media3.common.MediaMetadata
import androidx.media3.exoplayer.ExoPlayer
import com.ohdodok.catchytape.core.domain.model.Music

fun ExoPlayer.moveNextMedia() {
seekToNextMediaItem()
if (isPlaying) {
play()
}
}

fun ExoPlayer.movePreviousMedia() {
seekToPreviousMediaItem()
if (isPlaying) {
play()
}
}

fun getMediasWithMetaData(musics: List<Music>): List<MediaItem> {
val mediaItemBuilder = MediaItem.Builder()
val mediaMetadataBuilder = MediaMetadata.Builder()
return musics.map { music ->
mediaItemBuilder
.setMediaId(music.id)
.setUri("~~~~.m3u8") // TODO :Music domain에서 변수 추가 되면 반영해야 함
.setMediaMetadata(
mediaMetadataBuilder
.setArtist(music.artist)
.setTitle(music.title)
.setArtworkUri(music.imageUrl.toUri())
.build()
)
.build()
}
}

0 comments on commit d7a8ce0

Please sign in to comment.