È possibile fornire informazioni sullo stile per le tracce di sottotitoli codificati utilizzando la classe TextFormat, che imposta lo stile per i sottotitoli codificati visualizzati dal lettore.
Questa classe racchiude informazioni sullo stile dei sottotitoli codificati, ad esempio il tipo di carattere, la dimensione, il colore e l'opacità dello sfondo.
È possibile applicare uno stile al testo con sottotitoli codificati con i metodi TVSDK.
Attendi che il lettore multimediale si trovi almeno nel PREPARED
stato.
Creare un TextFormatBuilder
dell'istanza.
Potete specificare tutti i parametri di stile dei sottotitoli o impostarli in un secondo momento.
TVSDK incapsula le informazioni sullo stile dei sottotitoli nella TextFormat
di rete. Il TextFormatBuilder
La classe crea oggetti che implementano questa interfaccia.
public TextFormatBuilder(
TextFormat.Font font,
TextFormat.Size size,
TextFormat.FontEdge fontEdge,
java.lang.String fontColor,
java.lang.String backgroundColor,
java.lang.String fillColor,
java.lang.String edgeColor,
int fontOpacity,
int backgroundOpacity,
int fillOpacity
java.lang.String bottomInset,
java.lang.String safeArea)
Per ottenere un riferimento a un oggetto che implementa TextFormat
, chiama il TextFormatBuilder.toTextFormat
metodo pubblico.
Questo restituisce un TextFormat
oggetto che può essere applicato al lettore multimediale.
public TextFormat toTextFormat()
È possibile ottenere le impostazioni di stile sottotitoli correnti eseguendo una delle operazioni seguenti:
Ottieni tutte le impostazioni di stile con MediaPlayer.getCCStyle
Il valore restituito è un'istanza del TextFormat
di rete.
/**
* @return the current closed captioning style.
* If no style was previously set, it returns a TextFormat object
* with default values for each attribute.
* @throws MediaPlayerException if media player was already released.
*/
public TextFormat getCCStyle() throws MediaPlayerException;
Ottenere le impostazioni una alla volta tramite TextFormat
metodi getter dell'interfaccia.
public java.lang.String getFontColor();
public java.lang.String getBackgroundColor();
public java.lang.String getFillColor(); // retrieve the font fill color
public java.lang.String getEdgeColor(); // retrieve the font edge color
public TextFormat.Size getSize(); // retrieve the font size
public TextFormat.FontEdge getFontEdge(); // retrieve the font edge type
public TextFormat.Font getFont(); // retrieve the font type
public int getFontOpacity();
public int getBackgroundOpacity();
public java.lang.String getBottomInset(java.lang.String bi);
public java.lang.String getSafeArea(java.lang.String sa);
Per modificare le impostazioni di stile, effettuare una delle seguenti operazioni:
Utilizzare il metodo setter MediaPlayer.setCCStyle
, passaggio di un'istanza di TextFormat
Interfaccia:
/**
* Sets the closed captioning style. Used to control the closed captioning font,
* size, color, edge and opacity.
*
* This method is safe to use even if the current media stream doesn't have closed
* captions.
*
* @param textFormat
* @throws MediaPlayerException
*/
public void setCCStyle(TextFormat textFormat) throws MediaPlayerException;
Utilizza il TextFormatBuilder
classe, che definisce i singoli metodi di impostazione.
Il TextFormat
L'interfaccia definisce un oggetto immutabile in modo che esistano solo metodi getter e nessun setter. È possibile impostare i parametri di stile dei sottotitoli solo con TextFormatBuilder
classe:
// set font type
public void setFont(Font font)
public void setBackgroundColor(String backgroundColor)
public void setFillColor(String fillColor)
// set the font-edge color
public void setEdgeColor(String edgeColor)
// set the font size
public void setSize(Size size)
// set the font edge type
public void setFontEdge(FontEdge fontEdge)
public void setFontOpacity(int fontOpacity)
public void setBackgroundOpacity(int backgroundOpacity)
// set the font-fill opacity level
public void setFillOpacity(int fillOpacity)
public void setFontColor(String fontColor)
public void setBottomInset(String bi)
public void setSafeArea(String sa)
public void setTreatSpaceAsAlphaNum(bool)
Impostazioni colore: In Android TVSDK 2.X, è stato apportato un miglioramento allo stile dei colori dei sottotitoli. Questo miglioramento consente di impostare i colori dei sottotitoli codificati utilizzando una stringa esadecimale che rappresenta i valori dei colori RGB. La rappresentazione colore esadecimale RGB è la nota stringa da 6 byte utilizzata in applicazioni come Photoshop:
Nell'applicazione, ogni volta che trasmettete le informazioni sullo stile del colore a TextFormatBuilder
, si utilizza ancora il Color
come prima, ma ora è necessario aggiungere getValue()
al colore per ottenere il valore come stringa. Ad esempio:
tfb = tfb.setBackgroundColor(TextFormat.Color.RED <b>.getValue()</b>);
Poiché l'impostazione dello stile sottotitoli è un'operazione asincrona, la visualizzazione delle modifiche sullo schermo potrebbe richiedere alcuni secondi.
È possibile specificare diverse opzioni di stile per i sottotitoli, che sostituiscono le opzioni di stile dei sottotitoli originali.
public TextFormatBuilder(
Font font,
Size size,
FontEdge fontEdge,
String fontColor,
String backgroundColor,
String fillColor,
String edgeColor,
int fontOpacity,
int backgroundOpacity,
int fillOpacity,
String bottomInset
String safeArea)
Nelle opzioni che definiscono i valori predefiniti (ad esempio, DEFAULT
), tale valore si riferisce all'impostazione utilizzata quando la didascalia è stata originariamente specificata.
Formato | Descrizione |
---|---|
Font | Tipo di carattere. Può essere impostato solo su un valore definito da TextFormat.Font e rappresenta, ad esempio, a spaziatura fissa con o senza servifs. Suggerimento: i tipi di carattere effettivi disponibili su un dispositivo possono variare e, se necessario, vengono utilizzate sostituzioni. Il monospazio con serifs è tipicamente usato come sostituto, anche se questa sostituzione può essere specifica per il sistema. |
Dimensione | Dimensione della didascalia. Può essere impostato solo su un valore definito da FormatoTesto.Dimensione enumerazione:
|
Bordo font | Effetto utilizzato per il bordo del font, ad esempio in rilievo o nessuno. Può essere impostato solo su un valore definito da TextFormat.FontEdge enumerazione. |
Colore font | Colore del carattere. Può essere impostato solo su un valore definito da FormatoTesto.Colore enumerazione. |
Colore bordo | Colore dell'effetto bordo. Può essere impostato su uno qualsiasi dei valori disponibili per il colore del carattere. |
Colore di sfondo | Colore della cella del carattere di sfondo. Può essere impostato solo sui valori disponibili per il colore del carattere. |
Colore riempimento | Colore dello sfondo della finestra in cui si trova il testo. Può essere impostato su uno qualsiasi dei valori disponibili per il colore del carattere. |
Opacità font | Opacità del testo. Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY il carattere è 100. |
Opacità sfondo | Opacità della cella del carattere di sfondo. Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY per lo sfondo è 100. |
Opacità riempimento | Opacità dello sfondo della finestra della didascalia. Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY per il riempimento è 0. |
Interno inferiore | Distanza verticale dalla parte inferiore della finestra dei sottotitoli da evitare. Espresso come percentuale dell'altezza della finestra dei sottotitoli (ad esempio, "20%") o come numero di pixel (ad esempio, "20"). |
Area utile | Area compresa tra 0% e 25% intorno al bordo dello schermo in cui i sottotitoli non verranno visualizzati. Per impostazione predefinita, l'area di sicurezza per WebVTT è 0%. Questa impostazione consente all'applicazione di ignorare tale impostazione predefinita. Se vengono forniti due valori, ad esempio la stringa "10%,20%", il primo valore è l’area di sicurezza orizzontale e il secondo valore è l’area di sicurezza verticale. Se viene fornito un valore, ad esempio la stringa "15%", sia l'asse verticale che l'asse orizzontale utilizzano l'area di sicurezza specificata. |
Di seguito sono riportati alcuni esempi che mostrano come specificare la formattazione dei sottotitoli.
private final MediaPlayer.PlaybackEventListener _playbackEventListener =
new MediaPlayer.PlaybackEventListener() {
@Override
public void onPrepared() {
// Set CC style.
TextFormat tf = new TextFormatBuilder(
TextFormat.Font.DEFAULT,
TextFormat.Size.DEFAULT,
TextFormat.FontEdge.DEFAULT,
TextFormat.Color.DEFAULT.getValue(),
TextFormat.Color.DEFAULT.getValue(),
TextFormat.Color.DEFAULT.getValue(),
TextFormat.Color.DEFAULT.getValue(),
TextFormat.DEFAULT_OPACITY,
TextFormat.DEFAULT_OPACITY,
TextFormat.DEFAULT_OPACITY).toTextFormat();
mediaPlayer.setCCStyle(tf);
...
}
}
/**
* Constructor using parameters to initialize a TextFormat.
*
* @param font
* The desired font.
* @param size
* The desired text size.
* @param fontEdge
* The desired font edge.
* @param fontColor
* The desired font color.
* @param backgroundColor
* The desired background color.
* @param fillColor
* The desired fill color.
* @param edgeColor
* The desired color to draw the text edges.
* @param fontOpacity
* The desired font opacity.
* @param backgroundOpacity
* The desired background opacity.
* @param fillOpacity
* The desired fill opacity.
*/
public
<b>TextFormatBuilder</b>(
Font font, Size size, FontEdge fontEdge,
String fontColor, String backgroundColor,
String fillColor, String edgeColor,
int fontOpacity, int backgroundOpacity,
int fillOpacity);
/**
* Creates a TextFormat with the parameters supplied to this builder.
*/
public TextFormat
<b>toTextFormat</b>();
/**
* Sets the text font.
* @param font The desired font
* @return This builder object to allow chaining calls
*/
public
<b>TextFormatBuilder</b> setFont(Font font);
...