TV in diretta è un'app TV di riferimento progettata per i dispositivi TV Android. Tuttavia, i produttori di dispositivi potrebbero voler aggiungere altre funzioni specifiche del prodotto, che non sono coperte dall'implementazione predefinita della TV in diretta, come la regolazione dell'immagine, la modalità di gioco o la modalità 3D. Per supportare queste opzioni o funzioni specifiche del dispositivo, la TV in diretta supporta le seguenti personalizzazioni:
- Attivazione della modalità di spostamento in avanti nel tempo, che consente agli utenti di mettere in pausa, andare avanti veloce e riavvolgere. Configurare la modalità di posticipazione per utilizzare la memoria esterna anziché quella interna.
- Aggiunta di opzioni alla riga delle opzioni TV.
- Aggiunta di una riga personalizzata e di opzioni al suo interno.
Nota: Live
Channels è l'implementazione di Google della TV in diretta che può essere utilizzata così com'è su
dispositivi con i servizi Google. Per personalizzare i canali dal vivo, sostituisci
com.android.tv.*
con com.google.android.tv.*
in queste
istruzioni.
Personalizzare la TV in diretta
Per personalizzare la TV in diretta, sul dispositivo Android TV di destinazione deve essere installato 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.
Configurare la modalità di spostamento in avanti o indietro nel tempo
Il time-shifting (trickplay) consente ai dispositivi TV Android di mettere in pausa, riavvolgere e mandare avanti veloce la riproduzione dei canali. Nell'implementazione di Live TV, il time-shifting può essere utilizzato tramite l'interfaccia utente dei controlli di riproduzione. Il time-shifting è attivo per impostazione predefinita nella TV in diretta, ma può essere disattivato. Il posticipazione può essere configurata anche per l'utilizzo unicamente dello spazio di archiviazione esterno.
Per configurare lo spostamento in avanti nel tempo, aggiungi la risorsa stringa trickplay_mode
e imposta il relativo valore su una di queste opzioni:
enabled
: attiva il time-shifting. Questo è il valore predefinito se non vengono fornite opzioni.disabled
: disattiva il posticipamento.use_external_storage_only
: configura il posticipamento per utilizzare lo spazio di archiviazione esterno.
<string name="trickplay_mode">use_external_storage_only</string>

Figura 1. L'interfaccia utente dei controlli di riproduzione viene attivata premendo il pulsante centrale del D-pad.
Personalizzare le opzioni della TV
I produttori di dispositivi possono aggiungere opzioni personalizzate per le impostazioni della TV in diretta al menu esistente delle opzioni TV, ad esempio aggiungere una scorciatoia alle impostazioni Audio e Immagine.
Per indicare un'opzione personalizzata, dichiara un filtro intent che filtra la categoriacom.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 una sola opzione perché la TV in diretta non può distinguere i filtri intent in un'attività con la stessa categoria a causa della limitazione di Android. Per una soluzione alternativa, consulta Gestire più opzioni in un'attività.
I produttori di dispositivi possono anche inserire un'opzione personalizzata prima o dopo quelle esistenti definendo android:priority
in AndroidManifest.xml
.
Un'opzione con un valore di priorità definito inferiore a 100 viene visualizzata prima degli elementi esistenti, mentre un valore superiore a 100 viene visualizzato dopo. Più opzioni personalizzate (prima o dopo quelle esistenti) vengono ordinate in base alla priorità in ordine crescente. Se le opzioni hanno la stessa priorità, l'ordine tra di loro non è definito.
In questo esempio, l'opzione viene visualizzata per prima nella riga delle opzioni della TV e se si fa clic sull'opzione viene avviata 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>
Figura 2. Riga di esempio delle opzioni TV personalizzate (Luminosità e Risparmio energetico).
Figura 3. Esempi di opzioni per la TV personalizzata.
Gestire più opzioni in un'attività
Un'opzione viene mappata al filtro intent di un'attività e viceversa. Poiché Android
non distingue i filtri intent con le stesse categorie e azioni, un'attività gestisce solo un'opzione, anche se sono dichiarati più filtri intent. Per gestire più opzioni in un'attività, utilizza
<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>
Creare una riga personalizzata
I produttori di dispositivi possono aggiungere e personalizzare una riga sopra la riga delle opzioni TV. Questa riga personalizzata è facoltativa.
Titolo riga
Definisci 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 l'aggiunta di opzioni al menu Opzioni TV, ma cambia 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>
Figura 4. Riga personalizzata facoltativa di esempio.
Figura 5. Esempio di finestra di dialogo dell'opzione personalizzata.