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