Puede proporcionar información de estilo para las pistas de subtítulos cerrados mediante la clase TextFormat, que establece el estilo de los subtítulos cerrados que muestra el reproductor.
Esta clase encapsula información de estilo de subtítulos, como el tipo de fuente, el tamaño, el color y la opacidad del fondo.
Puede aplicar estilo al texto de subtítulos opcionales con métodos TVSDK.
Espere a que el reproductor de contenidos esté, al menos, en el PREPARED
estado.
Crear un TextFormatBuilder
ejemplo.
Puede proporcionar todos los parámetros de estilo de subtítulos ahora o establecerlos más adelante.
TVSDK encapsula la información de estilo de subtítulos en la variable TextFormat
interfaz. El TextFormatBuilder
crea objetos que implementan esta interfaz.
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)
Para obtener una referencia a un objeto que implementa la variable TextFormat
interfaz, llame a TextFormatBuilder.toTextFormat
método público.
Esto devuelve un TextFormat
objeto que se puede aplicar al reproductor de contenidos.
public TextFormat toTextFormat()
Opcionalmente, puede obtener la configuración actual del estilo de subtítulos si realiza una de las acciones siguientes:
Obtenga toda la configuración de estilo con MediaPlayer.getCCStyle
El valor devuelto es una instancia de TextFormat
interfaz.
/**
* @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;
Obtenga la configuración de una en una a través de la TextFormat
métodos de captador de interfaz.
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);
Para cambiar la configuración de estilo, siga uno de estos procedimientos:
Uso del método setter MediaPlayer.setCCStyle
, pasando una instancia de TextFormat
interfaz:
/**
* 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;
Utilice el TextFormatBuilder
, que define métodos de establecedor individuales.
El TextFormat
La interfaz define un objeto inmutable, por lo que solo hay métodos de captador y no hay definidores. Puede establecer los parámetros de estilo de subtítulos opcionales sólo con el TextFormatBuilder
clase:
// 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)
Configuración de color: En Android TVSDK 2.X, se mejoró el estilo de color de los subtítulos opcionales. La mejora permite definir colores de subtítulos cerrados mediante una cadena hexadecimal que representa valores de color RGB. La representación de color hexadecimal del RGB es la conocida cadena de 6 bytes que se utiliza en aplicaciones como Photoshop:
En la aplicación, siempre que pase información sobre el estilo de color a TextFormatBuilder
, seguirá utilizando la variable Color
enumeración como antes, pero ahora debe agregar getValue()
al color para obtener el valor como una cadena. Por ejemplo:
tfb = tfb.setBackgroundColor(TextFormat.Color.RED <b>.getValue()</b>);
La configuración del estilo de subtítulos es una operación asincrónica, por lo que los cambios pueden tardar hasta unos segundos en aparecer en la pantalla.
Puede especificar varias opciones de estilo de rótulo, que sustituirán a las opciones de estilo de los rótulos originales.
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)
En las opciones que definen los valores predeterminados (por ejemplo, DEFAULT
), ese valor hace referencia a la configuración utilizada cuando se especificó originalmente el pie de ilustración.
Formato | Descripción |
---|---|
Fuente | El tipo de fuente. Solo se puede establecer en un valor definido por la variable TextFormat.Font y representa, por ejemplo, monoespaciado con o sin serifs. Sugerencia: Las fuentes reales disponibles en un dispositivo pueden variar y se utilizan sustituciones cuando es necesario. El monoespacio con serifs suele utilizarse como sustituto, aunque esta sustitución puede ser específica del sistema. |
Tamaño | El tamaño del pie de ilustración. Solo se puede establecer en un valor definido por la variable TextFormat.Size enumeración:
|
Borde de fuente | Efecto utilizado para el borde de la fuente, como elevado o ninguno. Solo se puede establecer en un valor definido por la variable TextFormat.FontEdge enumeración. |
Color de fuente | El color de fuente. Solo se puede establecer en un valor definido por la variable TextFormat.Color enumeración. |
Color de borde | Color del efecto de borde. Se puede establecer en cualquiera de los valores disponibles para el color de fuente. |
Color de fondo | Color de la celda de caracteres de fondo. Solo se puede establecer en valores disponibles para el color de fuente. |
Color de relleno | Color del fondo de la ventana en la que se encuentra el texto. Se puede establecer en cualquiera de los valores disponibles para el color de fuente. |
Opacidad de fuente | Opacidad del texto. Expresado como porcentaje de 0 (completamente transparente) a 100 (completamente opaco). OPACIDAD_PREDETERMINADA para la fuente es 100. |
Opacidad de fondo | Opacidad de la celda de caracteres de fondo. Expresado como porcentaje de 0 (completamente transparente) a 100 (completamente opaco). OPACIDAD_PREDETERMINADA para el fondo es 100. |
Opacidad de relleno | Opacidad del fondo de la ventana de rótulo. Expresado como porcentaje de 0 (completamente transparente) a 100 (completamente opaco). OPACIDAD_PREDETERMINADA para el relleno es 0. |
Bajorrelieve | Distancia vertical desde la parte inferior de la ventana de rótulo para evitar los rótulos. Se expresa como un porcentaje de la altura de la ventana de rótulo (por ejemplo, "20%") o como un número de píxeles (por ejemplo, "20"). |
Zona segura | Región alrededor del borde de la pantalla entre el 0 % y el 25 % en la que no aparecerán los subtítulos. De forma predeterminada, el área segura para WebVTT es del 0 %. Esta configuración permite que la aplicación anule ese valor predeterminado. Si se proporcionan dos valores, por ejemplo, la cadena "10%,20%", el primer valor es el área segura horizontal y el segundo es el área segura vertical. Si se proporciona un valor, por ejemplo, la cadena "15%", los ejes vertical y horizontal utilizan el área segura especificada. |
A continuación se muestran algunos ejemplos que muestran cómo especificar el formato de subtítulos cerrados.
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);
...