برنامههای تلویزیونی که صدا پخش میکنند، ممکن است پس از بازگشت کاربر به صفحه اصلی یا رفتن به برنامه دیگر، به پخش خود ادامه دهند. برای انجام این کار، برنامه باید یک کارت «در حال پخش» در صفحه اصلی ارائه دهد. این کارت به کاربران اجازه میدهد تا بفهمند صدا از کجا میآید و برای کنترل پخش رسانه به برنامه شما برگردند.
هر زمان که یک MediaSession فعال وجود داشته باشد، چارچوب اندروید یک کارت Now Playing را در صفحه اصلی نمایش میدهد. این کارت شامل ابردادههای رسانهای مانند تصویر آلبوم، عنوان و آیکون برنامه است. وقتی کاربر کارت را انتخاب میکند، سیستم برنامه را باز میکند.
الان ورق بازی
پس از پیادهسازی یک جلسه رسانهای ، تنظیم جلسه روی حالت فعال و درخواست فوکوس صوتی، کارت «در حال پخش» ظاهر میشود.
توجه: کارت Now Playing فقط برای یک جلسه رسانهای با پرچم FLAG_HANDLES_TRANSPORT_CONTROLS نمایش داده میشود. این پرچم در سطح API 26 منسوخ شده است. با این حال، این پرچم هنوز هم میتواند در دستگاههای قدیمیتر برای سازگاری با نسخههای قبلی مورد نیاز باشد.
کارت از صفحه لانچر حذف میشود وقتی که فراخوانی setActive(false) جلسه رسانه را غیرفعال کند یا وقتی برنامه دیگری پخش رسانه را آغاز کند. اگر پخش کاملاً متوقف شده و هیچ رسانه فعالی وجود ندارد، جلسه رسانه را فوراً غیرفعال کنید. اگر پخش متوقف شده است، جلسه رسانه را پس از تأخیر، معمولاً از ۵ تا ۳۰ دقیقه، غیرفعال کنید.
کارت را بهروزرسانی کنید
هر زمان که برنامه شما وضعیت پخش را در MediaSession بهروزرسانی میکند، کارت Now Playing بهروزرسانی میشود تا وضعیت رسانه فعلی را نشان دهد. برای یادگیری نحوه انجام این کار، به Update the playback state مراجعه کنید.
به طور مشابه، برنامه شما میتواند MediaMetadata بهروزرسانی کند تا اطلاعاتی در مورد رسانه فعلی، مانند عنوان، زیرنویس و آیکونهای مختلف، به کارت Now Playing ارائه دهد. برای یادگیری نحوه انجام این کار، به Update the media metadata مراجعه کنید.
پاسخ به اقدام کاربر
وقتی کاربر کارت Now Playing را انتخاب میکند، سیستم برنامهای را که مالک جلسه است باز میکند. اگر برنامه شما یک PendingIntent برای setSessionActivity() ارائه دهد، سیستم اکتیویتیای را که شما مشخص میکنید، همانطور که در قطعه کد زیر نشان داده شده است، اجرا میکند. در غیر این صورت، intent پیشفرض سیستم باز میشود. اکتیویتیای که شما مشخص میکنید باید کنترلهای پخش را ارائه دهد که به کاربران اجازه مکث یا توقف پخش را بدهد.
کاتلین
val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent -> PendingIntent.getActivity( context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) } session.setSessionActivity(pi)
جاوا
Intent intent = new Intent(context, MyActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT); session.setSessionActivity(pi);
موارد استفاده پذیرفته شده
کارت «در حال پخش» فقط باید در مواردی استفاده شود که کاربر انتظار دارد هنگام خروج از برنامه، صدا در پسزمینه ادامه یابد. پخش ویدیو یا صدای بازی باید همیشه متوقف شود، مگر اینکه برنامه شما با تصویر در تصویر یکپارچه و سازگار باشد.