6월 3일의 ⁠#Android11: 베타 버전 출시 행사에 참여하세요.

Media2

최근 업데이트 현재 안정화 버전 다음 출시 후보 베타 버전 알파 버전
2020년 2월 19일 1.0.3 - - -

종속성 선언

Media2의 종속성을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속성을 추가합니다.

    dependencies {
        def media2_version = "1.0.3"

        // Interacting with MediaSessions
        implementation "androidx.media2:media2-session:$media2_version"
        // optional - UI widgets for VideoView and MediaControlView
        implementation "androidx.media2:media2-widget:$media2_version"
        // optional - Implementation of a SessionPlayer
        implementation "androidx.media2:media2-player:$media2_version"
    }
    

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참조하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 라이브러리를 만들기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표를 추가할 수 있습니다.

새 문제 만들기

자세한 내용은 Issue Tracker 문서를 참조하세요.

버전 1.0.3

버전 1.0.3

2020년 2월 19일

androidx.media2:media2-*:1.0.3가 출시되었습니다. media2-{common,player,session}의 버전 1.0.3에 포함된 커밋media2-widget의 버전 1.0.3에 포함된 커밋을 확인하세요.

버그 수정

  • null 콜백으로 MediaController를 만들 때의 NullPointerException이 수정되었습니다.
  • MediaPlayer.setMediaItem 이후 onPlaylistChanged()가 호출되지 않는 문제가 수정되었습니다.

버전 1.0.2

버전 1.0.2

2020년 2월 5일

androidx.media2:media2-*:1.0.2가 출시되었습니다. media2-{common,player,session}의 버전 1.0.2에 포함된 커밋media2-widget의 버전 1.0.2에 포함된 커밋을 확인하세요.

버그 수정

  • MediaPlayer#getSelectedTrack()IndexOutOfBoundsException을 수정했습니다. (aosp/987003 참조)
  • ExoPlayer에서 getDuration()을 호출하고 미디어 항목이 존재하지 않는 경우의 처리가 개선되었습니다(aosp/987484 참조).
  • IDLE 상태에서 getDuration()이 호출되면 ExoPlayer에서 IllegalStateException이 발생하는 버그가 수정되었습니다(aosp/987246 참조).
  • media2의 맞춤 Parcelable을 허용하지 않습니다(aosp/1091056 참조).
  • close()에서 대기를 발생시키는 문제가 해결되었습니다(aosp/1096455 참조).
  • MediaBrowser: MediaBrowserService와 관련된 subscribe()의 오류 처리를 개선했습니다(aosp/1158057 참조).
  • Framework MediaSession과 MediaController의 충돌이 수정되었습니다(aosp/1177663 참조).
  • 연결이 이루어졌을 때 콜백을 통해 세션 정보를 알리지 않습니다(aosp/1195030b/142925848 참조).
  • MediaController에서 SessionResult가 예상치 않게 한 번 이상 전송될 수 있는 문제가 수정되었습니다(aosp/1198634 참조).
  • MediaController에서 허용되지 않는 명령어를 MediaSession로 보낼 수 있는 문제가 수정되었으므로 이제 MediaSession에서 RESULT_ERROR_PERMISSION_DENIED를 전송합니다(aosp/1204183 참조).
  • MediaControllerView#setPlayer와 관련된 비정상적인 문제가 수정되었습니다(aosp/987004 참조).

버전 1.0.1

버전 1.0.1

2019년 10월 9일

androidx.media2:media2-*:1.0.1 버전이 출시되었습니다. androidx.media2:media2-{player, session}:1.0.1의 버전 1.0.1에는 이러한 커밋이 포함되어 있으며 androidx.media2:media2-widget:1.0.1의 버전 1.0.1에는 이러한 커밋이 포함되어 있습니다.

버그 수정

  • 프로세스 간에 MediaItem의 서브클래스가 전송될 때 발생하는 RuntimeException이 수정되었습니다. aosp/1098971을 참조하세요.
  • 재생목록을 재생할 때 MediaPlayer가 onCurrentMediaItemChanged()를 한 번만 호출하는 문제가 수정되었습니다.
  • MediaPlayer가 항목이 3개 이상인 재생목록을 재생할 수 있을 때 발생하는 문제가 수정되었습니다. aosp/1108440을 참조하세요.
  • 플레이어가 표시되지 않더라도 SurfaceView에서 계속 재생되는 문제가 수정되었습니다.
  • setPlayer 전에 setViewType을 호출할 때 발생하는 VideoView 재생 문제가 수정되었습니다.

버전 1.0.0

2019년 9월 5일

androidx.media2:media2-*:1.0.0 버전이 출시되었습니다. media2-{player, session}:1.0.0에는 이러한 커밋이 포함되어 있으며 media2-widget:1.0.0에는 이러한 커밋이 포함되어 있습니다.

Media2 1.0.0의 주요 기능

Media2는 MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoViewMediaControlView와 같은 차세대 Media API입니다.

  • media2.player.MediaPlayer
    • API는 일반적으로 android.media.MediaPlayer와 일치하며 기본 엔진은 ExoPlayer입니다.
    • 내장 오디오 포커스 및 노이즈 처리
    • SessionPlayer 구현
  • media2.session.MediaSession
    • 세분화된 권한 제어 제공
    • 맞춤 레이아웃 지원
    • androidx.media2.player.MediaPlayer와 같은 SessionPlayer와 함께 사용하기 쉬움
    • MediaControllerCompat과 상호 운용 가능
  • media2.session.MediaSessionService
    • MediaLibraryService의 경량 버전
    • 백그라운드 재생을 위한 서비스 수명 주기 관리 제공
    • MediaControllerCompatMediaBrowserServiceCompat과 상호 운용 가능
  • media2.session.MediaLibraryService
    • 미디어 항목 탐색 또는 많은 항목이 포함된 검색결과를 위해 향상된 페이지로 나누기 기능 지원
    • MediaControllerCompatMediaBrowserServiceCompat과 상호 운용 가능
  • media2.session.MediaController
    • MediaSession, MediaSessionServiceMediaLibraryService에 연결 가능
    • MediaSessionCompatMediaBrowserServiceCompat과 상호 운용 가능
  • media2.session.MediaBrowser
    • MediaController 상속
    • MediaSession, MediaSessionServiceMediaLibraryService에 연결 가능
    • MediaSessionCompatMediaBrowserServiceCompat과 상호 운용 가능
  • media2.widget.VideoView
    • android.widget.VideoView의 모든 기능 포함
    • TextureViewSurfaceView 간 전환 제공
    • MediaSession과 함께 작동 가능
  • media2.widget.MediaControlView
    • 향상된 디자인과 분위기
    • android.widget.MediaController의 모든 기능 포함
    • 자막 트랙 선택, 재생 속도 선택 및 전체 화면 모드 제공

버전 1.0.0-rc02

2019년 8월 22일

androidx.media2:media2-*:1.0.0-rc02 버전이 출시되었습니다. 이 버전에 포함된 변경사항은 여기에서 확인할 수 있습니다. 이 출시에는 androidx.media2:media2-widget:1.0.0-rc02 버전이 포함됩니다. 이 버전에 포함된 변경사항은 여기에서 확인할 수 있습니다.

새로운 기능

  • MediaControlViewVideoView에 속할 때 MediaControlView(MCV)를 통해 setPlayer 또는 setController를 더 이상 호출할 수 없습니다.

버그 수정

  • MediaControlView: 다음 또는 이전 미디어 항목이 있을 때만 다음 및 이전 버튼을 클릭할 수 있습니다.
  • MediaControlView: onAttachedToWindow()가 호출될 때 발생하는 비정상적 NullPointerException이 수정되었습니다.
  • 이제 현재 미디어 항목이 변경될 때 Media2 위젯이 새 미디어 항목의 메타데이터를 올바르게 처리합니다.

Media2-Widget 버전 1.0.0-beta01

2019년 7월 2일

androidx.media2:media2-widget:1.0.0-beta01 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • 백그라운드 재생: VideoView 내에서 플레이어를 만드는 대신 VideoView는 앱이 백그라운드 재생 모드로 원활히 전환되도록 SessionPlayer 또는 MediaController를 사용할 수 있습니다.
  • media2-player 라이브러리와의 종속성을 삭제했습니다.
  • onViewTypeChangedListener를 추가했습니다.

API 변경사항

  • 공개에서 보호로 공개 상태 변경:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • 삭제:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • 추가:
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

버전 1.0.0-rc01

2019년 6월 18일

androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01androidx.media2:media2-session:1.0.0-rc01 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • ListenableFuture의 종속성이 Guava의 독립형 구현으로 다시 이전되었습니다.

  • 전체 Guava 아티팩트에 종속되는 테스트 타겟이 있다면 특정 버전의 Android Gradle 플러그인을 사용할 때 종속성 확인 충돌이 발생할 수 있습니다. ListenableFuture와 관련된 Could not resolve all artifacts 오류가 발생하면 프로젝트의 빌드 구성에 android.dependency.useConstraints=false를 추가하여 문제를 일시적으로 해결할 수 있습니다. 나중에 출시하기 위해 현재 Android Gradle 플러그인 내에서 영구 수정 작업을 진행하고 있습니다.

버전 1.0.0-beta02

2019년 6월 5일

androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02androidx.media2:media2-session:1.0.0-beta02 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • androidx.media.player.MediaPlayer에서 음수 재생 속도를 설정하면 RESULT_ERROR_BAD_VALUE가 반환됩니다.
  • Guava ListenableFuture를 Jetpack 구현으로 대체합니다. aosp/968828을 참조하세요.

버전 1.0.0-beta01

2019년 5월 7일

androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01androidx.media2:media2-session:1.0.0-beta01 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • 라이브러리가 media2-common, media2-player, media2-session의 세 부분으로 분리됩니다.
  • @NonNull로 표시되는 null 인수의 IllegalPointerExceptionNullPointerException으로 변경했습니다.

API 변경사항

  • MediaController.Builder가 도입되었습니다.
  • FileMediaItem.Builder의 선택적 필드를 위한 setter 메서드가 추가되었습니다.
  • MediaControllerMediaBrowser에서 MediaSession, MediaSessionService 또는 MediaLibraryService에 애플리케이션의 연결 힌트를 보낼 수 있습니다.
  • Android 10 Media2 API에 따라 일부 메서드의 이름이 변경되었습니다.

버전 1.0.0-alpha04

2018년 12월 17일

API 변경사항

  • 다음 클래스의 이름을 변경했습니다.
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • 다음 클래스를 병합했습니다.
    • DataSourceDesc2MediaItem2MediaItem 클래스로 결합했습니다.
    • MediaPlaylistAgentMediaPlayerConnectorSessionPlayer 클래스로 결합했습니다.
  • RatingHeartRating, PercentageRating, StarRatingThumbRating 서브클래스를 추가했습니다.
  • Media2는 이제 비동기 메서드에 ListenableFuture를 사용합니다.