본문 바로가기
Android

Jetpack Media3 알아보기

by kkong93 2023. 9. 29.
반응형

Jetpack Media3는 Android의 새로운 멀티미디어 라이브러리로, 기존의 MediaSession과 Media2 라이브러리의 후속 버전입니다. 이 라이브러리는 오디오 및 비디오 재생과 같은 멀티미디어 앱을 만들 때 사용됩니다. Media3는 코틀린을 기반으로 하고 있으며, 현대적인 안드로이드 개발 패턴과 잘 통합됩니다.

주요 기능
MediaSession 및 MediaController: 재생 상태 및 컨트롤을 캡슐화합니다.
MediaItem: 미디어 콘텐츠를 표현합니다.
Player: 실제 미디어 재생을 담당합니다.

 

기본 사용방법

최신버전으로 넣기

dependencies {
    implementation "androidx.media3:media3-session:1.2.0"
    implementation "androidx.media3:media3-exoplayer:1.2.0"
}
import androidx.media3.common.MediaItem
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.session.MediaSession

class MyPlayerService : Service() {
    private lateinit var mediaSession: MediaSession
    private lateinit var player: ExoPlayer

    override fun onCreate() {
        super.onCreate()

        // Player 초기화
        player = ExoPlayer.Builder(this).build()

        // MediaSession 초기화
        mediaSession = MediaSession.Builder(this, player)
            .setSessionActivity(PendingIntent.getActivity(this, 0, Intent(this, MainActivity::class.java), 0))
            .build()

        // 예시로 하나의 미디어 아이템을 준비
        val mediaItem = MediaItem.fromUri("https://example.com/audio.mp3")
        player.setMediaItem(mediaItem)
        player.prepare()
    }

    override fun onDestroy() {
        super.onDestroy()
        mediaSession.release()
        player.release()
    }
}
import androidx.media3.session.MediaController

class MainActivity : AppCompatActivity() {
    private lateinit var mediaController: MediaController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // MediaController 초기화
        mediaController = MediaController.Builder(this)
            .setSessionCompatToken(MediaSessionCompat.Token.fromBundle(bundleOf("token" to "your_token_here")))
            .build()
        
        // 재생, 일시정지 등의 조작
        playButton.setOnClickListener {
            mediaController.play()
        }

        pauseButton.setOnClickListener {
            mediaController.pause()
        }
    }
}

더 다양한 기능은 공식문서를 참고하면 된다!

반응형

댓글