Control del estilo de subtítulos

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.

Definir estilos de subtítulos

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

  1. Espere a que el reproductor de contenidos esté, al menos, en el PREPARED estado.

  2. 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)
    
  3. 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()

  4. 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);
      
  5. 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)
      
      IMPORTANTE

      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:

      • FFFFFF = Negro
      • 000000 = Blanco
      • FF0000 = Rojo
      • 00FF00 = Verde
      • 0000FF = Azul
        y demás.

      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.

Opciones de estilo de subtítulos

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

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:

  • MEDIO - La talla estándar
  • GRANDE - Aproximadamente un 30% más grande que el medio
  • PEQUEÑO - Aproximadamente un 30% más pequeño que el medio
  • PREDETERMINADO : el tamaño predeterminado para el pie de ilustración; igual que el medio

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.

Ejemplos de formato de rótulo

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

En esta página