Control del estilo de subtítulos

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.

Establecer estilos de subtítulos

Puede aplicar estilo al texto de los subtítulos con métodos TVSDK.

  1. Espere a que el reproductor de medios esté en al menos el estado PREPARADO.

  2. 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)
    
  3. 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()
    
  4. 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();
      
  5. Para cambiar la configuración de estilo, realice una de las acciones siguientes:

    NOTA

    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.

Opciones de estilo de subtítulos

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

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 :

  • MEDIO - Tamaño estándar
  • GRANDE - Aproximadamente un 30% mayor que medio
  • PEQUEÑO - Aproximadamente un 30% menor que medio
  • PREDETERMINADO: el tamaño predeterminado del rótulo; igual que medium

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.

Ejemplos de formato de rótulo

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);
...

En esta página