È possibile fornire informazioni sullo stile per le tracce di didascalia chiusa utilizzando la classe TextFormat, che imposta lo stile per le didascalie chiuse visualizzate dal lettore.
Questa classe racchiude informazioni sullo stile dei sottotitoli codificati quali tipo di font, dimensioni, colore e opacità dello sfondo.
È possibile personalizzare lo stile del testo a didascalia chiusa con i metodi TVSDK.
Attendi che il lettore multimediale sia almeno nello stato PREPARED
.
Crea un'istanza TextFormatBuilder
.
Ora puoi fornire tutti i parametri di stile dei sottotitoli o impostarli in un secondo momento.
TVSDK incapsula le informazioni sullo stile dei sottotitoli nell'interfaccia TextFormat
. La classe TextFormatBuilder
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 l'interfaccia TextFormat
, chiamare il metodo pubblico TextFormatBuilder.toTextFormat
.
Restituisce un oggetto TextFormat
che può essere applicato al lettore multimediale.
public TextFormat toTextFormat()
Facoltativamente, ottenere le impostazioni correnti dello stile dei sottotitoli codificati eseguendo una delle operazioni seguenti:
Ottieni tutte le impostazioni di stile con MediaPlayer.getCCStyle
Il valore restituito è un'istanza dell'interfaccia TextFormat
.
/**
* @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;
Ottieni le impostazioni una alla volta tramite i metodi getter dell'interfaccia TextFormat
.
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 dello stile, effettuare una delle seguenti operazioni:
Utilizzare il metodo setter MediaPlayer.setCCStyle
, passando un'istanza dell'interfaccia TextFormat
:
/**
* 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;
Utilizzare la classe TextFormatBuilder
, che definisce i singoli metodi di setter.
L'interfaccia TextFormat
definisce un oggetto immutabile in modo che esistano solo metodi getter e senza setter. È possibile impostare i parametri di stile dei sottotitoli solo con la classe TextFormatBuilder
:
// 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 migliorato lo stile del colore dei sottotitoli codificati. Il miglioramento consente di impostare i colori dei sottotitoli utilizzando una stringa esadecimale che rappresenta i valori di colore RGB. La rappresentazione del colore esadecimale RGB è la nota stringa a 6 byte utilizzata in applicazioni come Photoshop:
e così via.
Nell'applicazione, ogni volta che trasmetti informazioni sullo stile del colore a TextFormatBuilder
, utilizzi comunque l'enumerazione Color
come prima, ma ora devi aggiungere getValue()
al colore per ottenere il valore come stringa. Ad esempio:
tfb = tfb.setBackgroundColor(TextFormat.Color.RED <b>.getValue()</b>);
L’impostazione dello stile dei sottotitoli è un’operazione asincrona, pertanto potrebbero essere necessari fino a pochi secondi affinché le modifiche vengano visualizzate sullo schermo.
È possibile specificare diverse opzioni di stile per le didascalie e queste opzioni sostituiscono le opzioni di stile nelle didascalie 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 quando la didascalia è stata originariamente specificata.
Formato | Descrizione |
---|---|
Font | Tipo di carattere. Può essere impostato solo su un valore definito dall'enumerazione TextFormat.Font e che rappresenta, ad esempio, la spaziatura con o senza serifs. Suggerimento: I font effettivi disponibili su un dispositivo possono variare e vengono utilizzati sostituzioni quando necessario. Monospazio con i sieri viene generalmente utilizzato come sostituto, anche se questa sostituzione può essere specifica del sistema. |
Dimensione | Dimensione della didascalia. Può essere impostato solo su un valore definito dall'enumerazione TextFormat.Size :
|
Bordo font | Effetto utilizzato per lo spigolo del font, ad esempio sollevato o nessuno. Può essere impostato solo su un valore definito dall'enumerazione TextFormat.FontEdge . |
Colore font | Il colore del font. Può essere impostato solo su un valore definito dall'enumerazione TextFormat.Color . |
Colore bordo | Colore dell'effetto bordo. Può essere impostato su uno qualsiasi dei valori disponibili per il colore del font. |
Colore di sfondo | Colore della cella del carattere di sfondo. Può essere impostato solo sui valori disponibili per il colore del font. |
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 font. |
opacità del carattere | opacità del testo. Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY per il font è 100. |
Opacità di 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à di 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. |
Ingresso inferiore | Distanza verticale dalla parte inferiore della finestra della didascalia per evitare didascalie. Espresso come percentuale dell’altezza della finestra della didascalia (ad esempio, "20%") o come numero di pixel (ad esempio, "20"). |
Area di sicurezza | Area intorno al bordo dello schermo compresa tra 0% e 25% 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 gli assi verticali che orizzontali utilizzano l'area di sicurezza specificata. |
Di seguito sono riportati alcuni esempi che mostrano come specificare la formattazione dei sottotitoli codificati.
Esempio 1: Specificare esplicitamente i valori di formato
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);
...
}
}
Esempio 2: Specificare i valori di formato nei parametri
/**
* 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);
...