התאמה אישית של אפליקציית העזר לטלוויזיה

Live TV היא אפליקציית טלוויזיה לילדים, שמיועדת למכשירי טלוויזיה עם Android. אבל, לפעמים ליצרני מכשירים מומלץ להוסיף עוד פונקציות ספציפיות למוצר, לא נכלל בהטמעת ברירת המחדל של טלוויזיה בשידור חי, כמו התאמה, מצב משחק או מצב תלת-ממד. כדי לתמוך בפונקציות הספציפיות למכשיר האלה בטלוויזיה בשידור חי אפשר לבצע את הפעולות הבאות:

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

הערה: פעיל 'ערוצים' הוא ההטמעה של טלוויזיה בשידור חי על ידי Google שניתן להשתמש בה כפי שהיא מכשירים עם שירותי Google. כדי להתאים אישית את ערוצי השידורים החיים, צריך להחליף com.android.tv.* עם com.google.android.tv.* במקומות האלה הוראות להתאמה אישית.

התאמה אישית של טלוויזיה בשידור חי

כדי להתאים אישית את הטלוויזיה בשידור חי, למכשיר היעד של Android TV נדרשת חבילה להתאמה אישית מותקנת מראש, שחייבת להיות אפליקציית מערכת מוכנה מראש עם ההרשאה com.android.tv.permission.CUSTOMIZE_TV_APP.

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

נקודה חשובה: רק חבילה אחת יכולה להתאים אישית את הטלוויזיה בשידור חי.

הגדרת מצב הקלטה תוך כדי צפייה

התכונה 'הקלטה תוך כדי צפייה' (trickplay) מאפשרת למכשירי טלוויזיה עם Android להשהות או להריץ אחורה ולהריץ את הפעלת הערוץ קדימה. בהטמעה של טלוויזיה בשידור חי, יכול להיות שניתן להשתמש בו דרך ממשק המשתמש של הפקדים של Play. מצב ההקלטה תוך כדי צפייה מופעל כברירת מחדל טלוויזיה בשידור חי, אבל אפשר להשבית אותה. ניתן גם להגדיר את התכונה 'הקלטה תוך כדי צפייה' לשימוש אחסון חיצוני בלבד.

כדי להגדיר הקלטה תוך כדי צפייה, יש להוסיף את משאב המחרוזת trickplay_mode ומגדירים את הערך של אחת מהאפשרויות הבאות:

  • enabled: הפעלת הקלטה תוך כדי צפייה. זהו ערך ברירת המחדל כאשר לא ניתנות אפשרויות.
  • disabled: השבתת מצב ההקלטה תוך כדי צפייה.
  • use_external_storage_only: הגדרת הקלטה תוך כדי צפייה לשימוש ואחסון חיצוני.
<string name="trickplay_mode">use_external_storage_only</string>
ממשק המשתמש של פקדי Play יופעל לאחר
לחיצה על הלחצן המרכזי בלחצני החיצים.

איור 1. ממשק המשתמש של Play Controls מופעל אחרי שלוחצים על לחצן מרכזי בלחצני החיצים (D-pad).

התאמה אישית של אפשרויות הטלוויזיה

יצרני המכשירים יכולים להוסיף אפשרויות מותאמות אישית להגדרות של טלוויזיה בשידור חי להגדרות הקיימות תפריט האפשרויות של הטלוויזיה, כמו הוספת קיצור דרך להגדרות של תמונת האודיו.

כדי לציין אפשרות מותאמת אישית, צריך להצהיר על מסנן Intent שמסננים את הקטגוריה com.android.tv.category.OPTIONS_ROW בפעילות. התכונה המותאמת אישית הוטמע על ידי יצרן המכשיר בפעילות. הפעילות מופעלת אם לוחצים על האפשרות. השם והסמל של הפעילות משמשים לצורך האפשרות. אפשרויות הטלוויזיה המותאמות אישית צריכות להתאים לממשק המשתמש הקיים כדי לספק את חוויית המשתמש הכי טובה.

הערה: כל פעילות יכולה לטפל רק באפשרות אחת. כי התכונה 'טלוויזיה בשידור חי' לא יכולה להבדיל בין מסנני Intent בפעילות שכוללת קטגוריה בגלל המגבלה של Android. מומלץ לעיין בקטע טיפול במספר אפשרויות במסגרת פעילות כפתרון עקיף.

יצרני מכשירים יכולים גם להציב אפשרות מותאמת אישית לפני או אחרי המכשיר הקיים באמצעות הגדרה של android:priority ב-AndroidManifest.xml. אפשרות עם ערך עדיפות מוגדר הנמוך מ-100 מוצגת לפני הערך הקיים וערך גבוה מ-100 מוצג אחריו. מספר אפשרויות מותאמות אישית (אחת מהאפשרויות לפני או אחרי אפשרויות קיימות) ממוינות לפי העדיפות שלהן בסדר עולה הזמנה. אם לאפשרויות יש אותה עדיפות, הסדר של האפשרויות לא מוגדר.

בדוגמה הזו, האפשרות מופיעה ראשונה בשורת האפשרויות של הטלוויזיה, התכונה PictureSettingsActivity מופעלת אם לוחצים על האפשרות.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

דוגמה לשורה של אפשרויות טלוויזיה מותאמות אישית

איור 2. שורת אפשרויות לדוגמה של תוכניות טלוויזיה מותאמות אישית (בהירות ו חיסכון בצריכת אנרגיה).

דוגמאות לאפשרויות טלוויזיה בהתאמה אישית.

איור 3. דוגמאות לאפשרויות טלוויזיה בהתאמה אישית.

טיפול בכמה אפשרויות בפעילות

אפשרות ממופה למסנן Intent של פעילות, ולהיפך. כי Android לא מבחינה בין מסנני Intent עם אותן קטגוריות ופעולות, הפעילות מטפלת רק באפשרות אחת, גם אם הוצהרו כמה מסנני Intent בתוכו. כדי לטפל בכמה אפשרויות בפעילות, צריך להשתמש ב- <activity-alias> בAndroidManifest.xml. ב פעילות, צריך להשתמש ב-getIntent().getComponent() כדי לזהות את האפשרות שלחצו עליה.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

יצירת שורה בהתאמה אישית

יצרני מכשירים יכולים להוסיף ולהתאים אישית שורה מעל שורת האפשרויות של הטלוויזיה. השורה המותאמת אישית הזו היא אופציונלית.

כותרת השורה

הגדרת מחרוזת partner_row_title ב- res/values/strings.xml. הערך של המחרוזת משמש לפרמטר המותאם אישית כותרת שורה.

<string name="partner_row_title">Partner Row</string>

אפשרויות מותאמות אישית

כדי להוסיף אפשרויות מותאמות אישית לשורה בהתאמה אישית, צריך לפעול לפי התהליך להוספת אפשרויות בתפריט האפשרויות של הטלוויזיה, אבל משנים את שם הקטגוריה ל- יש גם אפשרות com.android.tv.category.PARTNER_ROW.

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

שורה אופציונלית בהתאמה אישית לדוגמה.

איור 4. שורה אופציונלית בהתאמה אישית לדוגמה.

תיבת דו-שיח לדוגמה של אפשרות מותאמת אישית.

איור 5. תיבת דו-שיח לדוגמה של אפשרות מותאמת אישית.