Media2

مشاركة محتوى الوسائط وعناصر التحكّم فيه مع تطبيقات أخرى
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
10 كانون الثاني (يناير) 2024 1.3.0 - - -

الإعلان عن التبعيات

لإضافة تبعية على Media2، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات للعناصر التي تحتاج إليها في ملف 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. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.

إنشاء مشكلة جديدة

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 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 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف androidx.media2 نهائيًا. استخدِم androidx.media3 بدلاً من ذلك. (I53164)

الإصدار 1.2.1

الإصدار 1.2.1

9 شباط (فبراير) 2022

تم إصدار androidx.media2:media2-*:1.2.1. يحتوي الإصدار 1.2.1 على هذه المراجعات.

إصلاح الأخطاء

  • إصلاح التحقّق من Parcelables المخصّصة عند استهداف واجهة برمجة التطبيقات 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)

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة 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 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إتاحة استخدام (prepare|play)From(MediaId|Uri|Search) (I13475، b/176949057)

إصلاح الأخطاء

  • تم إصلاح مشكلة "توقُّف عمليات المعالجة في انتظار بعضها" بسبب عمليات المزامنة غير الضرورية.
  • إعادة ضبط المشغّل عندما لا تتوفّر عناصر قابلة للتشغيل
  • السماح لـ onCurrentMediaItemChanged بقبول عنصر وسائط غير صالح
  • تعديل الإشعار عند تغيير عنصر الوسائط الحالي
  • حلّ مشكلة عدم التوافق مع وحدة التحكّم بعد إنشاء الجلسة مباشرةً

الإصدار 1.1.3

الإصدار 1.1.3

21 نيسان (أبريل) 2021

تم إصدار androidx.media2:media2-*:1.1.3. يحتوي الإصدار 1.1.3 على عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة "توقُّف عمليات المعالجة في انتظار الحصول على الموارد" بسبب عمليات الربط غير الضرورية.

الإصدار 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

  • تمت إضافة المزيد من واجهات برمجة التطبيقات لمعالجة مسارات الوسائط
  • إتاحة التوافق بشكلٍ أفضل مع مكتبة الوسائط في 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 إشعارات إلى وظائف الاستدعاء أثناء حجز قفل، ما يؤدي إلى حدوث حالات حظر محتملة (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
  • حلّ مشكلة "الخطأ في معالجة الطلب" في 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 باستخدام دالة استدعاء فارغة.
  • تم إصلاح مشكلة عدم استدعاء 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)
  • عدم السماح بعناصر Parcelable المخصّصة لـ media2 (aosp/1091056)
  • تم إصلاح مشكلة كانت تؤدي إلى تعليق close() (aosp/1096455)
  • MediaBrowser: تم تحسين معالجة الأخطاء في subscribe() باستخدام MediaBrowserService (aosp/1158057)
  • تم إصلاح تعطُّل MediaController مع Framework MediaSession(aosp/1177663)
  • عدم إرسال إشعارات بمعلومات الجلسة من خلال عمليات الاستدعاء عند إجراء عملية الربط (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 تشغيل قائمة تشغيل تحتوي على أكثر من عنصرَين (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 التالية: MediaSession وMediaController وMediaBrowser وMediaBrowserService وVideoView وMediaControlView.

  • media2.player.MediaPlayer
    • تتم مطابقة واجهات برمجة التطبيقات في الغالب مع 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 Widget البيانات الوصفية لعنصر الوسائط الجديد بشكل صحيح عند تغيير عنصر الوسائط الحالي.

الإصدار 1.0.0-beta01 من تطبيق Media2-Widget

2 تموز (يوليو) 2019

تم إصدار androidx.media2:media2-widget:1.0.0-beta01. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

الميزات الجديدة

  • التشغيل في الخلفية: بدلاً من إنشاء مشغّل داخل VideoView، يمكن أن يستخدم VideoView SessionPlayer أو MediaController ليتمكّن التطبيق من الانتقال إلى وضع التشغيل في الخلفية بسلاسة.
  • إزالة الاعتماد على مكتبة media2-player
  • تمّت إضافة "onViewTypeChangedListener"

تغييرات واجهة برمجة التطبيقات

  • تغيير مستوى العرض من "علني" إلى "محمي":
    • 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. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

تغييرات واجهة برمجة التطبيقات

  • تم نقل التبعيات على ListenableFuture مرة أخرى إلى التنفيذ المستقل لمجموعة Guava.

  • يُرجى العلم أنّه إذا كانت لديك أهداف اختبار تعتمد على عنصر Guava الكامل، قد تواجه تعارضًا في حلّ التبعيات عند استخدام إصدارات معيّنة من "مكوّن Android Gradle". إذا واجهت خطأ Could not resolve all artifacts متعلّقًا بـ ListenableFuture، يمكنك معالجة المشكلة مؤقتًا عن طريق إضافة android.dependency.useConstraints=false إلى إعدادات إنشاء مشروعك. نعمل حاليًا على حلّ دائم لهذه المشكلة في المكوّن الإضافي لنظام Gradle المتوافق مع Android، وسيتم طرحه في تاريخ لاحق.

الإصدار 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. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

إصلاح الأخطاء

  • سيؤدي ضبط سرعة تشغيل سلبية على 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. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

الميزات الجديدة

  • يتم تقسيم المكتبات إلى 3 أجزاء: media2-common وmedia2-player وmedia2-session.
  • تم تغيير IllegalPointerException إلى NullPointerException للوسيطات null التي تم وضع علامة عليها باسم @NonNull.

تغييرات واجهة برمجة التطبيقات

  • تم طرحها في ‎MediaController.Builder
  • تمّت إضافة طرق ضبط للحقول الاختيارية في FileMediaItem.Builder
  • يمكن لتطبيقَي MediaController وMediaBrowser إرسال إشارات الربط إلى تطبيقَي MediaSession أو MediaSessionService أو MediaLibraryService.
  • تمت إعادة تسمية بعض الطرق لتتوافق مع واجهات برمجة تطبيقات Media2 في Android 10

الإصدار 1.0.0-alpha04

17 كانون الأول (ديسمبر) 2018

تغييرات واجهة برمجة التطبيقات

  • تمّت إعادة تسمية الفئات التالية:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • تم دمج الفئات التالية:
    • تم دمج DataSourceDesc2 وMediaItem2 في MediaItem
    • تم دمج MediaPlaylistAgent وMediaPlayerConnector في SessionPlayer
  • تمت إضافة الفئات الفرعية التالية من Rating: HeartRating وPercentageRating وStarRating وThumbRating.
  • يستخدم Media2 الآن ListenableFuture للطُرق غير المتزامنة.