Puede proporcionar información de estilo para las pistas de subtítulos mediante la clase TextFormat. Esto establece el estilo de cualquier subtítulo cerrado que muestre el reproductor.
Esta clase encapsula información de estilo de subtítulos cerrados como el tipo de fuente, el tamaño, el color y la opacidad del fondo. Una clase de ayuda asociada, TextFormatBuilder
, facilita el trabajo con la configuración de estilo de subtítulos.
Puede aplicar estilo al texto de los subtítulos con métodos TVSDK.
Espere a que el reproductor de medios esté en al menos el estado PREPARADO.
Cree una instancia TextFormatBuilder
.
Ahora puede proporcionar todos los parámetros de estilo de subtítulos o definirlos más adelante.
TVSDK encapsula información de estilo de subtítulos en la interfaz TextFormat
. La clase TextFormatBuilder
crea objetos que implementan esta interfaz.
public TextFormatBuilder(
Font font,
Size size,
FontEdge fontEdge,
Color fontColor,
Color backgroundColor,
Color fillColor,
Color edgeColor,
int fontOpacity,
int backgroundOpacity,
int fillOpacity)
Para obtener una referencia a un objeto que implementa la interfaz TextFormat
, llame al método público TextFormatBuilder.toTextFormat
.
Esto devuelve un objeto TextFormat
que se puede aplicar al reproductor de medios.
public TextFormat toTextFormat()
Opcionalmente, obtenga la configuración actual de estilo de subtítulos mediante uno de los siguientes procedimientos:
Obtenga todos los ajustes de estilo con MediaPlayer.getCCStyle
.
El valor devuelto es una instancia de la interfaz 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 IllegalStateException if media player was already released.
*/
public TextFormat getCCStyle() throws IllegalStateException;
Obtenga la configuración de una en una a través de los métodos de captador de la interfaz TextFormat
.
public Color getFontColor();
public Color getBackgroundColor();
public Color getFillColor(); // retrieve the font fill color
public Color getEdgeColor(); // retrieve the font edge color
public Size getSize(); // retrieve the font size
public FontEdge getFontEdge(); // retrieve the font edge type
public Font getFont(); // retrieve the font type
public int getFontOpacity();
public int getBackgroundOpacity();
Para cambiar la configuración de estilo, realice una de las acciones siguientes:
No se puede cambiar el tamaño de los subtítulos WebVTT.
Utilice el método de selección MediaPlayer.setCCStyle
, pasando una instancia de la interfaz 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 IllegalStateException
*/
public void setCCStyle(TextFormat textFormat) throws IllegalStateException;
Utilice la clase TextFormatBuilder
, que define métodos de establecimiento individuales.
La interfaz TextFormat
define un objeto inmutable, por lo que solo hay métodos getter y no hay definidores. Solo puede establecer los parámetros de estilo de subtítulos con la clase TextFormatBuilder
:
// set font type
public void setFont(Font font)
public void setBackgroundColor(Color backgroundColor)
public void setFillColor(Color fillColor)
// set the font-edge color
public void setEdgeColor(Color 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(Color fontColor)
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 y estas opciones anulan las opciones de estilo de los rótulos originales
public TextFormatBuilder(
Font font,
Size size,
FontEdge fontEdge,
Color fontColor,
Color backgroundColor,
Color fillColor,
Color edgeColor,
int fontOpacity,
int backgroundOpacity,
int fillOpacity,
String bottomInset)
En las opciones que definen valores predeterminados (por ejemplo, PREDETERMINADO), ese valor hace referencia a la configuración cuando se especificó originalmente el rótulo.
Formato | Descripción |
---|---|
Fuente | Tipo de fuente. Solo se puede establecer en un valor que esté definido por la enumeración TextFormat.Font y que represente, por ejemplo, espaciado con o sin serifs. Sugerencia: Las fuentes disponibles en un dispositivo pueden variar y se utilizan sustituciones cuando es necesario. Monospace con serifs se suele utilizar como sustituto, aunque esta sustitución puede ser específica del sistema. |
Tamaño | El tamaño del rótulo. Solo se puede establecer en un valor definido por la enumeración TextFormat.Size :
|
Borde de fuente | El efecto utilizado para el borde de la fuente, como elevado o ninguno. Solo se puede establecer en un valor definido por la enumeración TextFormat.FontEdge . |
Color de fuente | El color de la fuente. Solo se puede establecer en un valor definido por la enumeración TextFormat.Color . |
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 | El color de la celda del carácter 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 | La opacidad del texto. Se expresa como porcentaje de 0 (totalmente transparente) a 100 (totalmente opaco). DEFAULT_OPACITY para la fuente es 100. |
Opacidad del fondo | La opacidad de la celda del carácter de fondo. Se expresa como porcentaje de 0 (totalmente transparente) a 100 (totalmente opaco). DEFAULT_OPACITY para el fondo es 100. |
Opacidad de relleno | La opacidad del fondo de la ventana del rótulo. Se expresa como porcentaje de 0 (totalmente transparente) a 100 (totalmente opaco). DEFAULT_OPACITY para rellenar es 0. |
Puede especificar el formato de subtítulos.
Ejemplo 1: Especificar valores de formato explícitamente
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,
TextFormat.Color.DEFAULT,
TextFormat.Color.DEFAULT,
TextFormat.Color.DEFAULT,
TextFormat.DEFAULT_OPACITY,
TextFormat.DEFAULT_OPACITY,
TextFormat.DEFAULT_OPACITY).toTextFormat();
mediaPlayer.setCCStyle(tf);
...
}
}
Ejemplo 2: Especificar valores de formato en parámetros
/**
* 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 TextFormatBuilder(
Font font, Size size, FontEdge fontEdge,
Color fontColor, Color backgroundColor,
Color fillColor, Color edgeColor,
int fontOpacity, int backgroundOpacity,
int fillOpacity);
/**
* Creates a TextFormat with the parameters supplied to this builder.
*/
public TextFormat toTextFormat();
/**
* Sets the text font.
* @param font The desired font
* @return This builder object to allow chaining calls
*/
public TextFormatBuilder setFont(Font font);
...