Media2

לשתף תוכן מדיה ואמצעי בקרה עם אפליקציות אחרות.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
10 בינואר 2024 1.3.0 - - -

הצהרת יחסי תלות

כדי להוסיף תלות ב-Media2, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.

מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle של האפליקציה או המודול:

מגניב

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

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 1.3

גרסה 1.3.0

10 בינואר 2024

androidx.media2:media2-*:1.3.0 משוחרר. גרסה 1.3.0 כוללת את ההצהרות האלה.

שינויים חשובים מאז גרסה 1.2.0

  • androidx.media2 הוצא משימוש באופן מלא. במקום זאת, צריך להשתמש ב-androidx.media3.

גרסה 1.3.0-rc01

13 בדצמבר 2023

androidx.media2:media2-*:1.3.0-rc01 פורסמה ללא שינויים מ-Media2 1.3.0-beta01. גרסה 1.3.0-rc01 כוללת את ההצהרות האלה.

גרסה 1.3.0-beta01

29 בנובמבר 2023

androidx.media2:media2-*:1.3.0-beta01 פורסם ללא שינויים מ-Media2 1.3.0-alpha01. גרסה 1.3.0-beta01 מכילה את ההצהרות האלה.

גרסה 1.3.0-alpha01

15 בנובמבר 2023

androidx.media2:media2-*:1.3.0-alpha01 משוחרר. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • האפשרות androidx.media2 הוצאה משימוש באופן מלא. במקום זאת, אתם צריכים להשתמש ב-androidx.media3. (I53164)

גרסה 1.2.1

גרסה 1.2.1

9 בפברואר 2022

androidx.media2:media2-*:1.2.1 משוחרר. גרסה 1.2.1 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון הבדיקה של Parcelables בהתאמה אישית כשמגדירים טירגוט ל-API 33.

גרסה 1.2.0

גרסה 1.2.0

15 בספטמבר 2021

androidx.media2:media2-*:1.2.0 משוחרר. גרסה 1.2.0 מכילה את ההוספות האלה.

שינויים חשובים מאז גרסה 1.1.0

  • תמיכה ביכולת פעולה הדדית עם מדיה של AndroidX מסוג (prepare|play)From(MediaId|Uri|Search)
  • נוספו MEDIA_URI_PATH_SET_MEDIA_URI ו-MEDIA_URI_QUERY_URI ב-MediaConstants

גרסה 1.2.0-rc01

1 בספטמבר 2021

androidx.media2:media2-*:1.2.0-rc01 משוחרר. גרסה 1.2.0-rc01 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה של ANR כשסוגרים התראה על מדיה (Ifdcc2, ‏ b/148011394)

גרסה 1.2.0-beta01

30 ביוני 2021

androidx.media2:media2-*:1.2.0-beta01 משוחרר. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.

תכונות חדשות

  • תמיכה ביכולת פעולה הדדית עם מדיה של AndroidX מסוג (prepare|play)From(MediaId|Uri|Search)

שינויים ב-API

  • נוספו MEDIA_URI_PATH_SET_MEDIA_URI ו-MEDIA_URI_QUERY_URI ב-MediaConstants

גרסה 1.2.0-alpha01

21 באפריל 2021

androidx.media2:media2-*:1.2.0-alpha01 משוחרר. גרסה 1.2.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • הוספת תמיכה ב-(prepare|play)From(MediaId|Uri|Search)‏ (I13475, ‏ b/176949057)

תיקוני באגים

  • תיקון בעיה של נעילה גורפת שנגרמה על ידי חסימה מסונכרנת מיותרת.
  • איך מאפסים את הנגן כשאין פריטים שניתן להפעיל
  • מתן הרשאה ל-onCurrentMediaItemChanged לקבל פריט מדיה null
  • עדכון ההתראה כשפריט המדיה הנוכחי משתנה
  • תיקון של יכולת הפעולה ההדדית עם תאימות ל-Controller מיד אחרי יצירת הסשן

גרסה 1.1.3

גרסה 1.1.3

21 באפריל 2021

androidx.media2:media2-*:1.1.3 משוחרר. גרסה 1.1.3 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תיקוני באגים

  • תיקון בעיה של נעילה גורפת שנגרמה על ידי חסימה מסונכרנת מיותרת.

גרסה 1.1.2

גרסה 1.1.2

27 בינואר 2021

androidx.media2:media2-*:1.1.2 משוחרר. גרסה 1.1.2 כוללת את השמירות האלה.

תיקוני באגים

גרסה 1.1.1

גרסה 1.1.1

16 בדצמבר 2020

androidx.media2:media2-*:1.1.1 משוחרר. גרסה 1.1.1 מכילה את השמירות האלה.

תיקוני באגים

  • מעדכנים את ההתראה על המדיה כשפריט המדיה הנוכחי משתנה.

גרסה 1.1.0

גרסה 1.1.0

2 בדצמבר 2020

androidx.media2:media2-*:1.1.0 משוחרר. גרסה 1.1.0 כוללת את השמירות האלה.

שינויים משמעותיים מאז גרסה 1.0.0

  • הוספנו ממשקי API נוספים לטיפול בטראקים של מדיה
  • תמיכה משופרת בתאימות הדדית עם ספריית המדיה של AndroidX
    • האפשרות MediaSession#setMediaUri נוספה
    • חשיפה של MediaSessionCompat.Token דרך MediaSession#getSessionCompatToken()

גרסה 1.1.0-rc01

28 באוקטובר 2020

androidx.media2:media2-*:1.1.0-rc01 משוחרר. גרסה 1.1.0-rc01 כוללת את השמירות האלה.

  • תוקנה בעיה שבה MediaController שלח התראות על קריאות חוזרות (callbacks) בזמן שהוא מחזיק בנעילה, מה שעלול להוביל לנעילה מרובת משתתפים (deadlock) (I76c56
  • תוקנה בעיה שבה MediaSessionImplBase#isClosed() עלול לקרוס כשקוראים ל-getCurrentControllerInfo() ב-MediaSessionCompat שפורסם. (aosp/1423291]
  • תוקנה בעיה שבה media2 MediaSession לא הגדיר את מזהה הפריט הפעיל בתור ל-PlaybackStateCompat (aosp/1421652)
  • נוספה הדגל BIND_INCLUDE_CAPABILITIES בזמן הקישור לשירות, שמאפשר לאפליקציות מדיה ללא ראש לגשת למיקום אם יש להן הרשאה. האפשרות הזו שימושית במיוחד לאפליקציות של Android Auto. (aosp/1440731)

גרסה 1.1.0-beta01

16 בספטמבר 2020

androidx.media2:media2-*:1.1.0-beta01 משוחרר. גרסה 1.1.0-beta01 כוללת את ההצהרות האלה.

תיקוני באגים

  • איך מאפסים את המיקום הנוכחי כשפריט המדיה משתנה
  • שליחת מטא-נתונים ומצב האחסון במטמון כשמחוברים
  • תיקון קריסה בעת שליחת נתונים גדולים בין סשן לבין בקר
  • מוסיפים את <queries> למניפסט של media ושל media2 עבור Android 11
  • תיקון שגיאת NPE עבור MediaController.getPlaylist()
  • השבתת סרגל ההתקדמות של MediaControlView כשלא ניתן להשתמש בפקודת הקפיצה
  • שליחת התראה ל-PlaybackStateCompat כשפריט המדיה הנוכחי בסשן השתנה
  • תיקון חלוקת SessionPlayer.TrackInfo

גרסה 1.1.0-alpha01

24 ביוני 2020

androidx.media2:media2-*:1.1.0-alpha01 משוחרר. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה שקשורת לתזמון בזמן עדכון המטא-נתונים (I45567, ‏ b/143999611)
  • SessionResult ישמור את MediaItem מ-PlayerResult (I927b0, ‏ b/154885520)
  • תוקן באג שגרם לכך ש-MediaController#setVolumeTo() יכול לשנות את עוצמת הקול של הסטרימינג הלא נכון. (I76870, b/151204736)

גרסה 1.0.3

גרסה 1.0.3

19 בפברואר 2020

androidx.media2:media2-*:1.0.3 משוחרר. גרסה 1.0.3 של media2-{common,player,session} מכילה את השמירות האלה וגרסה 1.0.3 של media2-widget מכילה את השמירות האלה

תיקוני באגים

  • תוקנה השגיאה NullPointerException שנגרמה ביצירת MediaController עם קריאה חוזרת (callback) של null
  • תוקנה בעיה שבה לא הייתה קריאה ל-onPlaylistChanged() אחרי MediaPlayer.setMediaItem

גרסה 1.0.2

גרסה 1.0.2

5 בפברואר 2020

androidx.media2:media2-*:1.0.2 משוחרר. גרסה 1.0.2 של media2-{common,player,session} מכילה את השמירות האלה וגרסה 1.0.2 של media2-widget מכילה את השמירות האלה

תיקוני באגים

  • תוקנה בעיה ב-IndexOutOfBoundsException ב-MediaPlayer#getSelectedTrack(). (aosp/987003)
  • טיפול משופר במקרה שבו ExoPlayer קורא ל-getDuration() ופריט המדיה לא קיים (aosp/987484)
  • תוקן באג שגרם לכך ש-ExoPlayer לא יזרוק IllegalStateException כשgetDuration() נקרא במצב IDLE (aosp/987246)
  • אסור לאפשר Parcelables מותאמים אישית ל-media2 (aosp/1091056)
  • תוקנה בעיה שגרמה להשהיה ב-close() (aosp/1096455)
  • MediaBrowser: שיפור הטיפול בשגיאות ב-subscribe() באמצעות MediaBrowserService (aosp/1158057)
  • תוקן קריסה של MediaController עם Framework MediaSession‏(aosp/1177663)
  • לא לשלוח התראות לגבי פרטי הסשן באמצעות קריאות חזרה (callbacks) כשמתבצע החיבור (aosp/1195030, ‏ b/142925848)
  • תוקנה בעיה שבה יכול להיות ש-SessionResult יישלח יותר מפעם אחת באופן בלתי צפוי מ-MediaController‏ (aosp/1198634)
  • תוקנה בעיה שבה MediaController עשוי לשלוח פקודות אסורות ל-MediaSession, כך ש-MediaSession שולח עכשיו את RESULT_ERROR_PERMISSION_DENIED (aosp/1204183)
  • תוקנה בעיה לא עקבית ב-MediaControllerView#setPlayer (aosp/987004)

גרסה 1.0.1

גרסה 1.0.1

9 באוקטובר 2019

androidx.media2:media2-*:1.0.1 משוחרר. גרסה 1.0.1 של androidx.media2:media2-{player, session}:1.0.1 מכילה את ההצהרות האלה וגרסה 1.0.1 של androidx.media2:media2-widget:1.0.1 מכילה את ההצהרות האלה.

תיקוני באגים

  • תוקן RuntimeException כשסוג משנה של MediaItem נשלח בתהליך (aosp/1098971)
  • תוקנה בעיה שבה MediaPlayer קורא ל-onCurrentMediaItemChanged() רק פעם אחת כשמפעילים פלייליסט
  • תוקנה בעיה שבה MediaPlayer לא יכול היה להפעיל פלייליסט עם יותר מ-2 פריטים (aosp/1108440)
  • תוקנה בעיה שבה הנגן ממשיך לפעול ב-SurfaceView, גם אם הוא לא גלוי
  • תוקנה בעיה בהפעלת VideoView שמתרחשת כשמתבצעת שיחה אל setViewType לפני setPlayer

גרסה 1.0.0

5 בספטמבר 2019

androidx.media2:media2-*:1.0.0 משוחרר. אלה ההתחייבויות שכלולות ב-media2-{player, session}:1.0.0, ואלה ההתחייבויות שכלולות ב-media2-widget:1.0.0.

תכונות עיקריות של Media2 1.0.0

Media2 הוא הדור הבא של ממשקי ה-Media API הבאים: MediaSession,‏ MediaController,‏ MediaBrowser,‏ MediaBrowserService,‏ VideoView ו-MediaControlView.

  • media2.player.MediaPlayer
    • רוב ממשקי ה-API מותאמים ל-android.media.MediaPlayer, והמנוע הבסיסי הוא ExoPlayer
    • מיקוד אודיו מובנה וטיפול ברעש
    • הטמעת SessionPlayer
  • media2.session.MediaSession
    • בקרת הרשאות מפורטת
    • תמיכה בפריסות בהתאמה אישית
    • קל לשימוש עם SessionPlayer, כמו androidx.media2.player.MediaPlayer
    • יכולת פעולה הדדית עם 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

22 באוגוסט 2019

הגרסה androidx.media2:media2-*:1.0.0-rc02 זמינה, והשינויים שכלולים בגרסה הזו מפורטים כאן. הגרסה הזו כוללת את androidx.media2:media2-widget:1.0.0-rc02, והשינויים שכלולים בגרסה הזו מפורטים כאן.

תכונות חדשות

  • אסור יותר להפעיל את setPlayer או את setController דרך MediaControlView (MCV) כשה-MediaControlView שייך ל-VideoView

תיקוני באגים

  • MediaControlView: אפשר ללחוץ על הלחצנים 'הבא' ו'הקודם' רק אם יש פריטים קודמים או הבאים של מדיה
  • MediaControlView: תוקנה בעיה לא עקבית ב-NullPointerException כשקוראים ל-onAttachedToWindow()
  • הווידג'ט Media2 מטפל עכשיו כראוי במטא-נתונים של פריט המדיה החדש כשפריט המדיה הנוכחי השתנה

Media2-Widget גרסה 1.0.0-beta01

2 ביולי 2019

androidx.media2:media2-widget:1.0.0-beta01 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

  • הפעלה ברקע: במקום ליצור נגן בתוך 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

18 ביוני 2019

androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01 וגם androidx.media2:media2-session:1.0.0-rc01 משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

שינויים ב-API

  • יחסי התלות ב-ListenableFuture הועברו חזרה להטמעה העצמאית של Guava.

  • שימו לב: אם יש לכם יעדי בדיקה שתלויים ב-artifact המלא של Guava, יכול להיות שתתקלו בהתנגשויות בפתרון יחסי התלות כשמשתמשים בגרסאות מסוימות של Android Gradle Plugin. אם נתקלתם בשגיאה מסוג Could not resolve all artifacts שקשורה ל-ListenableFuture, תוכלו לעקוף את הבעיה באופן זמני על ידי הוספת android.dependency.useConstraints=false להגדרות ה-build של הפרויקט. אנחנו עובדים כרגע על תיקון קבוע ב-Android Gradle Plugin שיופץ במועד מאוחר יותר.

גרסה 1.0.0-beta02

5 ביוני 2019

התכונות androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02 וגם androidx.media2:media2-session:1.0.0-beta02 משוחררות. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • הגדרת מהירות הפעלה שלילית ב-androidx.media.player.MediaPlayer תחזיר את הערך RESULT_ERROR_BAD_VALUE.
  • החלפת Guava ListenableFuture בהטמעה של Jetpack (aosp/968828)

גרסה 1.0.0-beta01

7 במאי 2019

androidx.media2:media2-common:1.0.0-beta01,‏ androidx.media2:media2-player:1.0.0-beta01 וגם androidx.media2:media2-session:1.0.0-beta01 משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

  • הספריות מחולקות ל-3 חלקים: media2-common,‏ media2-player ו-media2-session
  • השינויים: IllegalPointerException ל-NullPointerException עבור הארגומנטים של null שסומנו בתווית @NonNull.

שינויים ב-API

  • הוספנו את MediaController.Builder
  • נוספו שיטות להגדרת שדות אופציונליים של FileMediaItem.Builder
  • MediaController ו-MediaBrowser יכולים לשלוח את הטיפים להתחברות של האפליקציה אל MediaSession, ‏ MediaSessionService או MediaLibraryService
  • השמות של חלק מה-methods השתנו בהתאם לממשקי ה-API של Media2 ב-Android 10

גרסה 1.0.0-alpha04

17 בדצמבר 2018

שינויים ב-API

  • שינינו את השמות של הכיתות הבאות:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • מוזגו הכיתות הבאות:
    • DataSourceDesc2 ו-MediaItem2 אוחדו ל-MediaItem
    • MediaPlaylistAgent ו-MediaPlayerConnector אוחדו ל-SessionPlayer
  • נוספו שתי קבוצות המשנה הבאות של Rating: HeartRating,‏ PercentageRating,‏ StarRating ו-ThumbRating
  • Media2 משתמש עכשיו ב-ListenableFuture לשיטות אסינכרוניות