پشتیبانی از نمایشگرهای متصل

نمایشگرهای متصل تجربه پنجره‌سازی دسکتاپ را به تلفن‌های استاندارد گسترش می‌دهند و به کاربران امکان دسترسی به صفحه‌نمایش‌های بزرگ از دستگاه‌های تلفن همراه خود را می‌دهند. این قابلیت فرصت های جدیدی را برای تعامل اپلیکیشن و بهره وری کاربر باز می کند.

تمام ویژگی های منحصر به فرد پنجره دسکتاپ برای نمایشگرهای متصل اعمال می شود. وقتی تلفنی را به نمایشگر متصل می‌کنید، وضعیت تلفن بدون تغییر باقی می‌ماند و یک جلسه خالی دسکتاپ روی صفحه نمایش متصل شروع می‌شود. دستگاه و نمایشگر به عنوان دو سیستم مجزا عمل می‌کنند که برنامه‌هایی برای هر نمایشگر دارند.

شکل 1. تلفن متصل به یک صفحه نمایش خارجی، با یک جلسه دسکتاپ روی صفحه نمایش در حالی که تلفن حالت خود را حفظ می کند.

اگر یک دستگاه دارای قابلیت پنجره دسکتاپ، مانند تبلت، را به یک مانیتور خارجی متصل کنید، جلسه دسکتاپ در هر دو نمایشگر گسترش می یابد. سپس دو نمایشگر به عنوان یک سیستم پیوسته عمل می کنند. این تنظیمات به پنجره ها، محتوا و مکان نما اجازه می دهد تا آزادانه بین دو نمایشگر حرکت کنند.

شکل 2. تبلت متصل به یک مانیتور خارجی، جلسه دسکتاپ را در هر دو نمایشگر گسترش می دهد.

پشتیبانی از نمایشگرهای متصل به طور موثر نیازمند توجه به چندین جنبه از طراحی و اجرای برنامه شما است. بهترین شیوه های زیر تجربه کاربری روان و سازنده را تضمین می کند.

کنترل تغییرات نمایشگر پویا

بسیاری از برنامه ها با این فرض ساخته می شوند که شی Display و ویژگی های آن در طول چرخه عمر برنامه تغییر نمی کند. با این حال، هنگامی که کاربر یک مانیتور خارجی را متصل یا قطع می‌کند، یا حتی یک پنجره برنامه را بین نمایشگرها جابه‌جا می‌کند، شیء زیرین Display مرتبط با زمینه یا پنجره برنامه شما می‌تواند تغییر کند. ویژگی‌های نمایشگر، مانند اندازه، وضوح، نرخ تازه‌سازی، پشتیبانی از HDR و تراکم، همگی می‌توانند متفاوت باشند. به عنوان مثال، اگر مقادیر هاردکد را بر اساس صفحه تلفن انجام دهید، احتمالاً طرح‌بندی‌های شما در یک نمایشگر خارجی خراب می‌شوند.

نمایشگرهای خارجی همچنین می توانند تراکم پیکسلی بسیار متفاوتی داشته باشند. باید مطمئن شوید که برنامه شما به تغییرات چگالی درست پاسخ می دهد. این شامل استفاده از پیکسل‌های مستقل از چگالی (dp) برای طرح‌بندی، ارائه منابع مخصوص چگالی، و اطمینان از مقیاس‌های UI شما به طور مناسب است.

از زمینه مناسب استفاده کنید

استفاده از زمینه مناسب در محیط های چند نمایشگر بسیار مهم است. هنگام دسترسی به منابع، زمینه فعالیت (که نمایش داده می شود) با زمینه برنامه (که نمایش داده نمی شود) متفاوت است.

زمینه فعالیت حاوی اطلاعاتی درباره نمایشگر است و همیشه برای ناحیه نمایشی که فعالیت در آن ظاهر می شود تنظیم می شود. این به شما امکان می دهد اطلاعات صحیحی در مورد تراکم نمایشگر یا معیارهای پنجره برنامه خود دریافت کنید. همیشه از زمینه فعالیت (یا زمینه مبتنی بر رابط کاربری دیگر) برای دریافت اطلاعات در مورد پنجره یا نمایشگر فعلی استفاده کنید. این همچنین بر برخی از APIهای سیستم که از اطلاعات موجود در زمینه استفاده می کنند تأثیر می گذارد.

دریافت اطلاعات نمایشگر

می‌توانید از کلاس Display برای دریافت اطلاعات در مورد یک نمایشگر خاص، مانند اندازه آن یا پرچم‌هایی که نشان می‌دهند آیا نمایشگر ایمن است استفاده کنید. برای دریافت نمایشگرهای موجود، از سرویس سیستم DisplayManager استفاده کنید:

val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()

راه اندازی و پیکربندی فعالیت را مدیریت کنید

با نمایشگرهای متصل، برنامه‌ها می‌توانند تعیین کنند که برنامه هنگام راه‌اندازی یا ایجاد فعالیت دیگری روی کدام نمایشگر اجرا شود. این رفتار به حالت راه‌اندازی فعالیت تعریف‌شده در فایل مانیفست و به پرچم‌ها و گزینه‌های intent که توسط نهادی که فعالیت را راه‌اندازی می‌کند، بستگی دارد.

وقتی یک فعالیت به یک نمایشگر ثانویه منتقل می‌شود، برنامه شما می‌تواند به‌روزرسانی زمینه، تغییر اندازه پنجره، و پیکربندی و تغییرات منابع را تجربه کند. اگر اکتیویتی تغییر پیکربندی را انجام دهد، در onConfigurationChanged() اطلاع رسانی می شود. در غیر این صورت، فعالیت دوباره راه اندازی می شود.

اگر حالت راه‌اندازی انتخاب‌شده برای یک فعالیت اجازه چند نمونه را می‌دهد، راه‌اندازی در صفحه ثانویه می‌تواند نمونه جدیدی از فعالیت ایجاد کند. هر دو فعالیت به طور همزمان از سر گرفته می شوند، که می تواند برای سناریوهای چندوظیفه ای خاص مفید باشد.

می توانید با استفاده از ActivityOptions یک فعالیت را روی یک نمایشگر خاص راه اندازی کنید:

val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())

از لیست های مجاز دستگاه خودداری کنید

گاهی اوقات برنامه‌ها رابط کاربری و ویژگی‌های صفحه بزرگ را برای انتخاب دستگاه‌ها از طریق فهرست مجاز یا با بررسی اندازه نمایش داخلی محدود می‌کنند. با نمایشگرهای متصل، این رویکرد دیگر موثر نیست، زیرا تقریباً هر دستگاه جدیدی را می توان به یک صفحه نمایش بزرگ متصل کرد. برنامه خود را طوری طراحی کنید که پاسخگو و سازگار با اندازه ها و تراکم های مختلف صفحه نمایش باشد.

پشتیبانی از تجهیزات جانبی خارجی

هنگامی که کاربران به یک صفحه نمایش خارجی متصل می شوند، اغلب محیطی شبیه دسکتاپ ایجاد می کنند. این اغلب شامل استفاده از صفحه کلید خارجی، ماوس، پد لمسی، وب کم، میکروفون و بلندگو می شود. شما باید مطمئن شوید که برنامه شما با این تجهیزات جانبی یکپارچه کار می کند. این شامل مدیریت میانبرهای صفحه کلید، مدیریت فعل و انفعالات اشاره گر ماوس، پشتیبانی صحیح از دوربین های خارجی یا میکروفون ها، و احترام به مسیریابی خروجی صدا است. برای جزئیات بیشتر، به سازگاری ورودی در صفحه نمایش های بزرگ مراجعه کنید.

افزایش بهره وری کاربر

نمایشگرهای متصل فرصت قابل توجهی برای بهبود بهره وری کاربر فراهم می کنند. اکنون ابزارهایی برای ساخت برنامه های تلفن همراه دارید که می توانند تجربیاتی قابل مقایسه با برنامه های دسکتاپ ارائه دهند. پیاده سازی ویژگی های زیر را برای افزایش بهره وری کاربر در نظر بگیرید:

  • به کاربران اجازه دهید چندین نمونه از یک برنامه را باز کنند. این برای کارهایی مانند مقایسه اسناد، مدیریت مکالمات مختلف یا مشاهده چندین فایل به طور همزمان بسیار ارزشمند است.
  • کاربران را قادر می سازد تا داده های غنی را در داخل و خارج از برنامه شما با کشیدن و رها کردن به اشتراک بگذارند.
  • به کاربران کمک کنید تا گردش کار خود را در تغییرات پیکربندی با پیاده سازی یک سیستم مدیریت حالت قوی حفظ کنند.

با پیروی از این دستورالعمل‌ها و استفاده از نمونه‌های کد ارائه‌شده، می‌توانید برنامه‌هایی ایجاد کنید که به‌طور یکپارچه با نمایشگرهای متصل سازگار شوند و تجربه‌ای غنی‌تر و سازنده‌تر را به کاربران ارائه دهند.