پیمایش تلویزیون

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

اصول اولیه

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

کارآمد

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

قابل‌پیش‌بینی

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

شهودی

پیمایش را به‌اندازه کافی ساده کنید تا از رفتارهای کاربر که به‌طور گسترده پذیرفته شده‌اند به‌طور یکپارچه پشتیبانی کند. با افزودن لایه‌های غیرضروری ناوبری، آن را بیش‌ازحد پیچیده نکنید.

کنترل‌کننده

کنترل‌کننده‌ها در سبک‌های مختلفی ارائه می‌شوند، از کنترل از دور مینیمالیستی گرفته تا کنترل‌کننده‌های بازی پیچیده. همه کنترل‌کننده‌ها شامل یک پد جهت‌دار (D-pad) به‌علاوه دکمه‌های انتخاب، خانه، و برگشت هستند. دکمه‌های دیگر بسته به مدل متفاوت است.

کنترل از دور تلویزیون
شکل ۱. نمونه‌ای از کنترل از دور تلویزیون.

پد کنترل
روش اصلی پیمایش در تلویزیون ازطریق پد کنترل است که شامل دکمه‌های سخت‌افزاری جهت‌دار بالا، پایین، چپ، و راست است. «پد کنترل» تمرکز را از یک شیء به نزدیک‌ترین شیء در جهت دکمه فشرده‌شده منتقل می‌کند.

دکمه انتخاب
مورد روی صفحه را که تمرکز روی آن است انتخاب می‌کند.

دکمه صفحه اصلی
کاربر را به صفحه اصلی سیستم می‌برد.

دکمه برگشتن
به کاربران امکان می‌دهد به نمای قبلی برگردند.

دکمه میکروفون
«دستیار Google» یا ورودی گفتاری را فرا می‌خواند.

پیمایش با پد کنترل

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

چارچوب Android به‌طور خودکار ناوبری جهتی بین عناصر چیدمان را مدیریت می‌کند، بنابراین معمولاً نیازی نیست کار اضافه‌ای برای برنامه‌تان انجام دهید. بااین‌حال، باید ناوبری را با کنترلر پد کنترل به‌طور کامل آزمایش کنید تا مشکلات ناوبری را پیدا کنید.

برای آزمایش اینکه سیستم پیمایش برنامه شما با کلیدهای کنترل روی دستگاه تلویزیون به‌خوبی کار می‌کند، این رهنمودها را دنبال کنید:

  • مطمئن شوید که کاربر با کنترل‌کننده D-pad می‌تواند به همه کنترل‌های نمایان در صفحه پیمایش کند.
  • برای پیمایش فهرست‌های دارای تمرکز، مطمئن شوید که دکمه‌های بالا و پایین «پد کنترل» فهرست را پیمایش می‌کنند و دکمه انتخاب موردی را در فهرست انتخاب می‌کند. تأیید کنید که کاربران می‌توانند عنصری را در فهرست انتخاب کنند و فهرست همچنان هنگام انتخاب عنصر پیمایش می‌شود.
  • مطمئن شوید که جابه‌جایی بین کنترل‌ها ساده و قابل پیش‌بینی باشد.

تغییر پیمایش جهتی

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

نمونه کد زیر نحوه تعریف کنترل بعدی را نشان می‌دهد که باید برای شیء چیدمان TextView کانون را دریافت کند:

<TextView android:id="@+id/Category1" android:nextFocusDown="@+id/Category2" />

جدول زیر همه مشخصه‌های پیمایش دردسترس برای ابزارک‌های واسط کاربر Android را فهرست می‌کند:

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

برای استفاده از یکی از این مشخصه‌های پیمایش صریح، مقدار را روی android:id ویجت دیگری در چیدمان تنظیم کنید. حتماً ترتیب پیمایش را به‌صورت حلقه‌ای تنظیم کنید تا آخرین عنصر کنترل، تمرکز را به اولین عنصر برگرداند.

تمرکز و انتخاب واضح ارائه دهید

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

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

‫Android برای پیاده‌سازی برجستگی برای کنترل‌های انتخاب‌شده و متمرکز، منابع فهرست وضعیت طراحی‌کردنی ارائه می‌دهد. مثال کد زیر نشان می‌دهد که چگونه رفتار دیداری را برای دکمه‌ای فعال کنید تا نشان دهد کاربر به کنترل پیمایش کرده و سپس آن را انتخاب کرده است:

<!-- res/drawable/button.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

کد نمونه XML چیدمان زیر دارایی فهرست حالت قبلی را به Button اعمال می‌کند:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />

حتماً در کنترل‌های قابل‌انتخاب و قابل‌تمرکز فاصله کافی ایجاد کنید تا بخش‌های برجسته اطراف آن‌ها به‌وضوح قابل‌مشاهده باشد.

پیمایش دکمه برگشتن

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

استفاده از عملکرد قابل‌پیش‌بینی دکمه برگشت

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

جریان ناوبری هنگام استفاده از ناوبری بالا
شکل ۲. ‫Flow بااستفاده از پیمایش بالا.
جریان پیمایش هنگام استفاده از پیمایش کناری
شکل ۳. جریان بااستفاده از پیمایش کناری.

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

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

مطمئن شوید که دکمه برگشت توسط صفحه‌های تأیید یا بخشی از یک حلقه بی‌نهایت محدود نشده باشد.

کادر گفتگویی که از کاربران می‌پرسد آیا می‌خواهند خارج شوند
شکل ۴. خروج از دروازه

این کار را نکنید.
از دروازه خروج اجتناب کنید. به کاربران اجازه می‌دهد بدون تأیید از برنامه خارج شوند.


پیمایش بین بستن و باز کردن منو
شکل ۵. حلقه پیمایش

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

دکمه بالا یا برگشت نمایش داده نشود

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

دکمه برگشت مجازی که روی صفحه نمایش داده می‌شود
شکل ۶. دکمه برگشتن نرم

این کار را نکنید.

درصورت نیاز، دکمه لغو را نشان دهید

اگر تنها کنش‌های نمایان تأیید، مخرب، یا خرید هستند، بهتر است دکمه لغو داشته باشید که به مقصد قبلی برمی‌گردد:

دکمه لغو که در کنار کنش‌های مخرب نمایش داده می‌شود
شکل ۷. دکمه لغو نرم.

انجام دهید.

پیاده‌سازی پیمایش به عقب

چارچوب Android معمولاً ناوبری به عقب را به‌خوبی مدیریت می‌کند، همان‌طور که پد کنترل را مدیریت می‌کند. اگر از عنصر پیمایش استفاده می‌کنید، می‌توانید از انواع مختلفی از گراف‌های پیمایش پشتیبانی کنید. گاهی اوقات، ممکن است نیاز به پیاده‌سازی برخی رفتارهای سفارشی داشته باشید، مانند اینکه دکمه برگشت تمرکز را به ابتدای یک فهرست طولانی بازنشانی کند.

ComponentActivity، کلاس پایه برای FragmentActivity و AppCompatActivity، به شما امکان می‌دهد بااستفاده از OnBackPressedDispatcher رفتار دکمه برگشت را کنترل کنید، که می‌توانید با فراخوانی getOnBackPressedDispatcher() آن را بازیابی کنید.

برای اطلاعات بیشتر، ارائه ناوبری برگشت سفارشی را ببینید.

کنترل‌های بازپخش در تلویزیون

بازپخش ویدیو یکی از مهم‌ترین ویژگی‌های تلویزیون است. مهم است که عملکرد پخش‌کننده‌های ویدیو در برنامه‌های Android TV یکسان باشد. به دستورالعمل‌های کنترل‌های بازپخش برای تلویزیون مراجعه کنید.

پیمایش زبانه زنده

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

بازپخش بدون اصطکاک

بازپخش بدون اصطکاک برای رفتار درون‌برنامه پس‌از هر پیوند عمیق کانال زنده یا خطی از Google TV و Android TV اعمال می‌شود.

وقتی کاربری روی پیوند عمیق کلیک می‌کند، قوانین زیر اعمال می‌شود:

  • بدون تأخیر: کاربران باید مستقیماً به پخش کانال هدایت شوند و صفحه‌های مسدودکننده یا تأخیرانداز، مانند جریان‌های ورود به سیستم یا ثبت‌نام یا ویدیوهای نمانام، نمایش داده نشود.
  • استثنای راه‌اندازی سرد: اگر پیوند عمیق بارگیری برنامه هدف را از راه‌اندازی سرد آغاز کند، تأخیر در راه‌اندازی مجاز است. ویدیوها یا پویانمایی‌های نمانام‌سازی راه‌اندازی برنامه نیز در این مورد مجاز است.
  • استثنای تأخیر در بارگذاری: اگر تنظیم کانال چند ثانیه طول بکشد، نمایش نمانام مجاز است. مدت زمان باید فقط به اندازه زمان لازم برای بار کردن کانال باشد.

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

مستقیم-عقب

وقتی کاربران برنامه‌ای را از پیوند عمیق در برگه «زنده» راه‌اندازی می‌کنند، سپس دکمه برگشت را فشار می‌دهند، باید با یک فشار دکمه برگشت به برگه «زنده» برگردانده شوند، صرف‌نظر از اینکه چقدر زمان گذشته است. این رفتار مستقیم-به‌عقب برای همه پیوندهای عمیق برگه «زنده» در Google TV و Android TV الزامی است.

پیوندهای عمیق برگه «زنده» با پارامتر پیوند عمیق پیوست‌شده متمایز می‌شوند: ?exit_on_back=[true|false]. برنامه‌ها باید این پارامتر را تجزیه کنند تا مشخص شود آیا برنامه از برگه «زنده» راه‌اندازی شده است یا نه. اگر exit_on_back true باشد، برنامه‌ها باید رفتار برگشت مستقیم را پیاده‌سازی کنند.

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

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

فشردن مکرر دکمه برگشت باید کاربر را به ریشه برنامه و سپس به Google TV یا Android TV هدایت کند، بدون اینکه حلقه بی‌نهایتی ایجاد شود. برای اطلاعات بیشتر، به بخش عملکرد قابل‌پیش‌بینی دکمه برگشت مراجعه کنید.

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

مقصد شروع ثابت

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

پیوند عمیق پیمایش دستی را شبیه‌سازی می‌کند

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

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

پیوند عمیق به یک برنامه از برنامه دیگر، شبیه‌سازی پیمایش دستی است. برای مثال، اگر کاربر مستقیماً از Google TV به صفحه جزئیات در برنامه Moviestar برود و سپس دکمه برگشتن را فشار دهد، به صفحه اصلی برنامه Moviestar هدایت می‌شود.

پاک کردن مسیر همه عناصر قابل‌تمرکز

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

چیدمانی با کنترل‌هایی که در مکان‌های غیرهم‌پوشان قرار گرفته‌اند
شکل ۹. کنترل تمرکزپذیری.

انجام دهید.
عناصر کنترلی، مثل کنش جستجویی که در اینجا نشان داده شده است، را در مکان‌هایی قرار دهید که با عناصر کلیک‌کردنی دیگر هم‌پوشانی نداشته باشد.

چیدمانی با کنترل‌هایی در مکان‌های دسترسی دشوار
شکل ۱۰. کنترل تمرکزپذیری.

این کار را نکنید.
از چیدمان‌هایی که در آن‌ها کنترل‌ها در مکان‌های سخت‌دسترس قرار دارند اجتناب کنید. دسترسی به کنش جستجویی که در اینجا نشان داده شده است با پد کنترل ممکن است دشوار باشد.

محورها

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

چیدمانی که از دسته‌های عمودی و موارد افقی استفاده می‌کند
شکل ۱۱. پیمایش.

انجام دهید.
دسته‌ها را می‌توان در محور عمودی پیمایش کرد و موارد درون هر دسته را می‌توان در محور افقی مرور کرد.

سلسله‌مراتب چیدمان پیچیده و تودرتو
شکل ۱۲. پیمایش.

این کار را نکنید.
از سلسله‌مراتب چیدمان پیچیده و تودرتو اجتناب کنید.