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 미디어와의 상호 운용성을 지원합니다.
MediaConstants
에MEDIA_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_URI
와MEDIA_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에 포함된 커밋을 확인하세요.
버그 수정
- VersionedParcelable에서 NPE를 수정했습니다. (I1ec28, b/177060207)
버전 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/1195030 및 b/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
, VideoView
및 MediaControlView
와 같은 차세대 Media API입니다.
media2.player.MediaPlayer
- API는 일반적으로
android.media.MediaPlayer
와 일치하며 기본 엔진은 ExoPlayer입니다. - 내장 오디오 포커스 및 노이즈 처리
- SessionPlayer 구현
- API는 일반적으로
media2.session.MediaSession
- 세분화된 권한 제어 제공
- 맞춤 레이아웃 지원
androidx.media2.player.MediaPlayer
와 같은 SessionPlayer와 함께 사용하기 쉬움MediaControllerCompat
과 상호 운용 가능
media2.session.MediaSessionService
MediaLibraryService
의 경량 버전- 백그라운드 재생을 위한 서비스 수명 주기 관리 제공
MediaControllerCompat
및MediaBrowserServiceCompat
과 상호 운용 가능
media2.session.MediaLibraryService
- 미디어 항목 탐색 또는 많은 항목이 포함된 검색결과를 위해 향상된 페이지로 나누기 기능 지원
MediaControllerCompat
및MediaBrowserServiceCompat
과 상호 운용 가능
media2.session.MediaController
MediaSession
,MediaSessionService
및MediaLibraryService
에 연결 가능MediaSessionCompat
및MediaBrowserServiceCompat
과 상호 운용 가능
media2.session.MediaBrowser
MediaController
상속MediaSession
,MediaSessionService
및MediaLibraryService
에 연결 가능MediaSessionCompat
및MediaBrowserServiceCompat
과 상호 운용 가능
media2.widget.VideoView
android.widget.VideoView
의 모든 기능 포함TextureView
와SurfaceView
간 전환 제공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
버전이 포함됩니다. 이 버전에 포함된 변경사항은 여기에서 확인할 수 있습니다.
새로운 기능
MediaControlView
가VideoView
에 속할 때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-rc01
및 androidx.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-beta02
및 androidx.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-beta01
및 androidx.media2:media2-session:1.0.0-beta01
버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 라이브러리가 media2-common, media2-player, media2-session의 세 부분으로 분리됩니다.
- @NonNull로 표시되는 null 인수의
IllegalPointerException
을NullPointerException
으로 변경했습니다.
API 변경사항
MediaController.Builder
가 도입되었습니다.FileMediaItem.Builder
의 선택적 필드를 위한 setter 메서드가 추가되었습니다.MediaController
및MediaBrowser
에서MediaSession
,MediaSessionService
또는MediaLibraryService
에 애플리케이션의 연결 힌트를 보낼 수 있습니다.- Android 10 Media2 API에 따라 일부 메서드의 이름이 변경되었습니다.
버전 1.0.0-alpha04
2018년 12월 17일
API 변경사항
- 다음 클래스의 이름을 변경했습니다.
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- 다음 클래스를 병합했습니다.
DataSourceDesc2
및MediaItem2
를MediaItem
클래스로 결합했습니다.MediaPlaylistAgent
및MediaPlayerConnector
를SessionPlayer
클래스로 결합했습니다.
Rating
의HeartRating
,PercentageRating
,StarRating
및ThumbRating
서브클래스를 추가했습니다.Media2
는 이제 비동기 메서드에ListenableFuture
를 사용합니다.