控制隱藏字幕樣式

您可以使用TextFormat類別,為隱藏字幕音軌提供樣式資訊。 如此可設定播放器所顯示之隱藏字幕的樣式。

此類別封裝隱藏字幕樣式資訊,例如字型類型、大小、色彩和背景不透明度。 關聯的幫助類TextFormatBuilder便於使用隱藏字幕樣式設定。

設定隱藏字幕樣式

您可以使用TVSDK方法來設定隱藏字幕文字的樣式。

  1. 等待媒體播放器至少處於「已準備」狀態。

  2. 建立TextFormatBuilder實例。

    您現在可以提供所有隱藏字幕樣式參數,或稍後再設定。

    TVSDK會將隱藏字幕樣式資訊封裝在TextFormat介面中。 TextFormatBuilder類建立實現此介面的對象。

    public TextFormatBuilder( 
       Font font, 
       Size size, 
       FontEdge fontEdge, 
       Color fontColor, 
       Color backgroundColor, 
       Color fillColor, 
       Color edgeColor, 
       int fontOpacity, 
       int backgroundOpacity, 
       int fillOpacity)
    
  3. 要獲取對實現TextFormat介面的對象的引用,請調用TextFormatBuilder.toTextFormat公用方法。

    這會傳回可套用至媒體播放器的TextFormat物件。

    public TextFormat toTextFormat()
    
  4. (可選)執行下列任一操作,以取得目前的隱藏字幕樣式設定:

    • 取得所有樣式設定與MediaPlayer.getCCStyle

      返回值是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;
      
    • 透過TextFormat介面getter方法一次取得一個設定。

      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. 要更改樣式設定,請執行下列操作之一:

    注意

    您無法變更WebVTT標題的大小。

    • 使用setter方法MediaPlayer.setCCStyle ,傳遞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;
      
    • 使用TextFormatBuilder類別,它定義各個setter方法。

      TextFormat介面定義不可變對象,因此只有getter方法和無設定器。 您只能使用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)
      

設定隱藏字幕樣式是非同步操作,因此變更可能需要數秒鐘才會顯示在畫面上。

隱藏字幕樣式選項

您可以指定數個標題樣式選項,而這些選項會覆寫原始標題中的樣式選項

public TextFormatBuilder(
 Font font,
 Size size,
 FontEdge fontEdge,
 Color fontColor,
 Color backgroundColor,
 Color fillColor,
 Color edgeColor,
 int fontOpacity,
 int backgroundOpacity,
 int fillOpacity,
 String bottomInset)
秘訣

在定義預設值(例如DEFAULT)的選項中,該值是指最初指定標題時的設定。

格式 說明
字型

字型類型。

只能設定為由 TextFormat.Font 枚舉定義的值,並表示(例如,帶有或不帶有序列)。

提示: 裝置上的實際可用字型可能會有所不同,並會視需要使用替代。 單空間與serifs通常用作替代,儘管這種替代可以是系統特定的。

大小

字幕大小。

只能設定為 TextFormat.Size 枚舉定義的值:

  • -標準尺寸
  • LARGE -大約30%(中)
  • 型——大約比中型小30%
  • DEFAULT -標題的預設大小;與介質相同

字型邊緣

用於字型邊緣的效果,例如凸起或無。

只能設定為由 TextFormat.FontEdge 枚舉定義的值。

字型顏色

字型顏色。

只能設定為 TextFormat.Color 枚舉定義的值。

邊緣顏色

邊緣效果的顏色。

可以設定為任何可用於字型顏色的值。

背景顏色

背景字元儲存格顏色。

只能設定為字型顏色可用的值。

填色顏色

文本所在窗口的背景顏色。

可以設定為任何可用於字型顏色的值。

字型不透明度

文字的不透明度。

以0(完全透明)到100(完全不透明)的百分比表示。 字型的DEFAULT_ OPACITY為100。

背景不透明度

背景字元儲存格的不透明度。

以0(完全透明)到100(完全不透明)的百分比表示。 背景的DEFAULT_ OPACITY為100。

填滿不透明度

標題視窗背景的不透明度。

以0(完全透明)到100(完全不透明)的百分比表示。 填色的DEFAULT_ OPACITY為0。

標題格式示例

您可以指定隱藏字幕格式。

範例1:明確指定格式值

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

範例2:在參數中指定格式值

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

本頁內容