Media2

다른 앱과 미디어 콘텐츠 및 컨트롤을 공유합니다.
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
2024년 1월 10일 1.3.0 - - -

종속 항목 선언

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

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

Groovy

dependencies {
    def media2_version = "1.3.0"

    // 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"
}

Kotlin

dependencies {
    val media2_version = "1.3.0"

    // 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.3

버전 1.3.0

2024년 1월 10일

androidx.media2:media2-*:1.3.0이 출시되었습니다. 버전 1.3.0에 포함된 커밋을 확인하세요.

1.2.0 이후 중요 변경사항

  • androidx.media2가 이제 완전히 지원 중단되었습니다. 대신 androidx.media3를 사용하세요.

버전 1.3.0-rc01

2023년 12월 13일

androidx.media2:media2-*:1.3.0-rc01이 Media2 1.3.0-beta01에서 변경사항 없이 출시되었습니다. 버전 1.3.0-rc01에 포함된 커밋을 확인하세요.

버전 1.3.0-beta01

2023년 11월 29일

androidx.media2:media2-*:1.3.0-beta01 버전은 Media2 1.3.0-alpha01에서 변경사항 없이 출시되었습니다. 버전 1.3.0-beta01에 포함된 커밋을 확인하세요.

버전 1.3.0-alpha01

2023년 11월 15일

androidx.media2:media2-*:1.3.0-alpha01이 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.

API 변경사항

  • androidx.media2가 이제 완전히 지원 중단되었습니다. 대신 androidx.media3를 사용합니다. (I53164)

버전 1.2.1

버전 1.2.1

2021년 2월 9일

androidx.media2:media2-*:1.2.1이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.

버그 수정

  • API 33을 타겟팅할 때 맞춤 Parcelable을 확인하도록 수정했습니다.

버전 1.2.0

버전 1.2.0

2021년 9월 15일

androidx.media2:media2-*:1.2.0이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.

1.1.0 이후 중요 변경사항

  • (prepare\play)From(MediaId|Uri|Search)의 AndroidX 미디어와의 상호 운용성을 지원합니다.
  • MediaConstantsMEDIA_URI_PATH_SET_MEDIA_URI, MEDIA_URI_QUERY_URI를 추가했습니다.

버전 1.2.0-rc01

2021년 9월 1일

androidx.media2:media2-*:1.2.0-rc01이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.

버그 수정

  • 미디어 알림을 닫을 때 발생하는 ANR 문제를 수정했습니다. (Ifdcc2, b/148011394)

버전 1.2.0-beta01

2021년 6월 30일

androidx.media2:media2-*:1.2.0-beta01이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.

새로운 기능

  • (prepare\play)From(MediaId|Uri|Search)의 AndroidX 미디어와의 상호 운용성을 지원합니다.

API 변경사항

  • MediaConstants에 MEDIA_URI_PATH_SET_MEDIA_URIMEDIA_URI_QUERY_URI를 추가했습니다.

버전 1.2.0-alpha01

2021년 4월 21일

androidx.media2:media2-*:1.2.0-alpha01이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.

API 변경사항

  • (prepare|play)From(MediaId|Uri|Search) 지원을 추가합니다. (I13475, b/176949057)

버그 수정

  • 불필요한 동기화된 블록으로 발생하는 교착 상태 문제를 수정했습니다.
  • 재생 가능한 항목이 없으면 플레이어를 재설정합니다.
  • onCurrentMediaItemChanged가 null 미디어 항목을 사용하도록 허용합니다.
  • 현재 미디어 항목이 변경되면 알림을 업데이트합니다.
  • 세션이 만들어진 직후 컨트롤러 호환성과의 상호 운용성을 수정합니다.

버전 1.1.3

버전 1.1.3

2021년 4월 21일

androidx.media2:media2-*:1.1.3이 출시되었습니다. 버전 1.1.3에 포함된 커밋을 확인하세요.

버그 수정

  • 불필요한 동기화된 블록으로 발생하는 교착 상태 문제를 수정했습니다.

버전 1.1.2

버전 1.1.2

2021년 1월 27일

androidx.media2:media2-*:1.1.2가 출시되었습니다. 버전 1.1.2에 포함된 커밋을 확인하세요.

버그 수정

버전 1.1.1

버전 1.1.1

2020년 12월 16일

androidx.media2:media2-*:1.1.1이 출시되었습니다. 버전 1.1.1에 포함된 커밋을 확인하세요.

버그 수정

  • 현재 미디어 항목이 변경되면 미디어 알림을 업데이트합니다.

버전 1.1.0

버전 1.1.0

2020년 12월 2일

androidx.media2:media2-*:1.1.0이 출시되었습니다. 버전 1.1.0에 포함된 커밋을 확인하세요.

1.0.0 이후 주요 변경사항

  • 미디어 트랙 처리를 위한 API 추가됨
  • AndroidX 미디어 라이브러리와의 상호운용성 지원 향상
    • MediaSession#setMediaUri 추가됨
    • MediaSession#getSessionCompatToken()을 통해 MediaSessionCompat.Token이 노출됨

버전 1.1.0-rc01

2020년 10월 28일

androidx.media2:media2-*:1.1.0-rc01가 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.

  • 잠금 상태일 때 MediaController에서 콜백에 알려 잠재적인 교착 상태를 유발하는 문제를 해결했습니다. (I76c56
  • 출시된 MediaSessionCompat에서 getCurrentControllerInfo()를 호출할 때 MediaSessionImplBase#isClosed()가 비정상 종료되는 문제를 해결했습니다. (aosp/1423291]
  • media2 MediaSession가 활성 대기열 항목 ID를 PlaybackStateCompat(aosp/121652)로 설정하지 않는 문제를 해결했습니다.
  • 헤드리스 미디어 애플리케이션에서 위치에 액세스할 수 있도록(권한이 있는 경우) 서비스에 바인딩될 때 BIND_INCLUDE_CAPABILITIES 플래그를 추가했습니다. 이 기능은 특히 Android Auto 앱에 유용합니다. (aosp/1440731)

버전 1.1.0-beta01

2020년 9월 16일

androidx.media2:media2-*:1.1.0-beta01가 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.

버그 수정

  • 미디어 항목이 변경되면 현재 위치를 재설정합니다.
  • 연결 시 메타데이터 및 버퍼링 상태를 전송합니다.
  • 세션과 컨트롤러 간에 대량의 데이터를 전송할 때 발생하는 비정상 종료 문제를 수정합니다.
  • Android 11용 media와 media2의 매니페스트에 <queries>를 추가합니다.
  • MediaController.getPlaylist()의 NPE 문제를 수정합니다.
  • 탐색 명령어가 허용되지 않으면 MediaControlView의 진행률 표시줄을 사용 중지합니다.
  • 세션의 현재 미디어 항목이 변경되면 PlaybackStateCompat에 알립니다.
  • SessionPlayer.TrackInfo의 parceling 문제를 수정합니다.

버전 1.1.0-alpha01

2020년 6월 24일

androidx.media2:media2-*:1.1.0-alpha01이 출시되었습니다. 버전 1.1.0-alpha01에 포함된 커밋을 확인하세요.

버그 수정

  • 메타데이터를 업데이트할 때 발생하는 타이밍 문제가 수정되었습니다(I45567, b/143999611 참고).
  • SessionResult는 PlayerResult의 MediaItem을 보존합니다(I927b0, b/154885520 참고).
  • MediaController#setVolumeTo()에서 잘못된 스트림 볼륨을 변경할 수 있는 버그가 수정되었습니다. (I76870, b/151204736 참고)

버전 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 변경사항

  • 공개에서 보호로 공개 상태가 변경된 API:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • 삭제된 API:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • 추가된 API:
    • 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를 사용합니다.