Personalizza l'app TV di riferimento

Live TV è un'app TV di riferimento progettata per i dispositivi televisivi Android. Tuttavia, i produttori di dispositivi potrebbero voler aggiungere ulteriori funzioni specifiche del prodotto, che non sono coperte dall'implementazione predefinita di Live TV, come la regolazione dell'immagine, la modalità gioco o la modalità 3D. Per supportare queste funzioni o opzioni specifiche del dispositivo, Live TV supporta queste personalizzazioni:

  • Abilitazione della modalità time-shifting, che consente agli utenti di mettere in pausa, avanzare rapidamente e riavvolgere. Configurazione della modalità timeshifting per utilizzare l'archiviazione esterna anziché quella interna.
  • Aggiunta di opzioni alla riga delle opzioni TV.
  • Aggiunta di una riga personalizzata e aggiunta di opzioni al suo interno.

Nota : Canali in diretta è l'implementazione di Google della TV in diretta che può essere utilizzata così com'è sui dispositivi con servizi Google. Per personalizzare i canali live, sostituisci com.android.tv.* con com.google.android.tv.* in queste istruzioni.

Personalizza la TV in diretta

Per personalizzare la TV in diretta, il dispositivo Android TV di destinazione necessita dell'installazione di un pacchetto di personalizzazione, che deve essere un'app di sistema predefinita con l'autorizzazione com.android.tv.permission.CUSTOMIZE_TV_APP .

La TV in diretta cerca un pacchetto di sistema con questa autorizzazione, controlla i file di risorse e rileva le attività del pacchetto contrassegnate con categorie specifiche per elaborare la personalizzazione.

Punto chiave : solo un pacchetto può personalizzare la TV in diretta.

Configura la modalità time-shifting

Il time-shifting (trickplay) consente ai dispositivi televisivi Android di mettere in pausa, riavvolgere e mandare avanti velocemente la riproduzione dei canali. Nell'implementazione della TV in diretta, il time-shifting può essere utilizzato tramite l'interfaccia utente dei controlli di riproduzione . Il time-shifting è abilitato per impostazione predefinita in Live TV, ma può essere disabilitato. È inoltre possibile configurare il timeshifting per utilizzare solo la memoria esterna.

Per configurare il time-shifting, aggiungi la risorsa stringa trickplay_mode e imposta il suo valore su una di queste opzioni:

  • enabled : abilita il timeshifting. Questo è il valore predefinito quando non viene fornita alcuna opzione.
  • disabled : disabilita il time-shifting.
  • use_external_storage_only : configura il timeshifting per utilizzare l'archiviazione esterna.
<string name="trickplay_mode">use_external_storage_only</string>
L'interfaccia utente dei controlli di riproduzione viene attivata dopo aver premuto il pulsante centrale del D-pad.

Figura 1 . L'interfaccia utente dei controlli di riproduzione viene attivata dopo aver premuto il pulsante centrale del D-pad.

Personalizza le opzioni TV

I produttori di dispositivi possono aggiungere opzioni personalizzate per le impostazioni della TV in diretta al menu delle opzioni TV esistente, ad esempio aggiungendo un collegamento alle impostazioni dell'immagine audio.

Per indicare un'opzione personalizzata, dichiara un filtro intent che filtra la categoria com.android.tv.category.OPTIONS_ROW in un'attività. La funzionalità personalizzata viene implementata dal produttore del dispositivo nell'attività. L'attività viene avviata se si fa clic sull'opzione. Per l'opzione vengono utilizzati il ​​titolo e l'icona dell'attività. Le opzioni TV personalizzate devono corrispondere all'interfaccia utente esistente per offrire la migliore esperienza utente.

Nota : un'attività può gestire solo un'opzione perché la TV in diretta non può differenziare i filtri di intenti in un'attività con la stessa categoria a causa delle limitazioni di Android. Vedi Gestire più opzioni in un'attività per una soluzione alternativa.

I produttori di dispositivi possono anche inserire un'opzione personalizzata prima o dopo le opzioni esistenti definendo android:priority in AndroidManifest.xml . Un'opzione con un valore di priorità definito inferiore a 100 viene visualizzata prima degli elementi esistenti e un valore superiore a 100 viene visualizzata dopo. Più opzioni personalizzate (prima o dopo le opzioni esistenti) vengono ordinate in base alla loro priorità in ordine crescente. Se le opzioni hanno la stessa priorità, l'ordine tra loro non è definito.

In questo esempio, l'opzione viene visualizzata per prima nella riga delle opzioni TV e PictureSettingsActivity viene avviata se si fa clic sull'opzione.

<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>

Esempio di riga di opzioni TV personalizzate

Figura 2 . Esempio di riga di opzioni TV personalizzate (luminosità e risparmio energetico).

Esempio di opzioni TV personalizzate.

Figura 3 . Esempio di opzioni TV personalizzate.

Gestire più opzioni in un'attività

Un'opzione si associa al filtro di intenti di un'attività e viceversa. Poiché Android non differenzia i filtri di intent con le stesse categorie e azioni, un'attività gestisce solo un'opzione, anche se in essa sono dichiarati più filtri di intent. Per gestire più opzioni in un'attività, utilizzare <activity-alias> in AndroidManifest.xml . Nell'attività, utilizza getIntent().getComponent() per identificare l'opzione su cui è stato fatto clic.

<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>

Crea una riga personalizzata

I produttori di dispositivi possono aggiungere e personalizzare una riga sopra la riga delle opzioni TV. Questa riga personalizzata è facoltativa.

Titolo della riga

Definire una stringa partner_row_title in res/values/strings.xml . Il valore della stringa viene utilizzato per il titolo della riga personalizzata.

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

Opzioni personalizzate

Per aggiungere opzioni personalizzate alla riga personalizzata, segui la procedura per aggiungere opzioni al menu delle opzioni TV, ma modifica invece il nome della categoria in 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>

Esempio di riga personalizzata facoltativa.

Figura 4 . Esempio di riga personalizzata facoltativa.

Esempio di finestra di dialogo delle opzioni personalizzate.

Figura 5 . Esempio di finestra di dialogo delle opzioni personalizzate.