รับการตั้งค่าคำบรรยายของระบบ

ใน Android TV การตั้งค่าจะให้ผู้ใช้กำหนดรูปแบบคำบรรยายของตนเอง คู่มือนี้จะสาธิตวิธีที่แอปสามารถรับและนําระบบที่ระบบมีให้ รูปแบบคำบรรยาย

ตัวเลือกคำบรรยายจะอยู่ในการตั้งค่า > ระบบ > การช่วยเหลือพิเศษ > คำบรรยาย:

การตั้งค่าคำบรรยายแทนเสียงของรถ ATV

รับ CaptioningManager

จากกิจกรรม คุณสามารถรับบริการคำบรรยายจาก Context ของกิจกรรมได้โดยใช้ CaptioningManager:

CaptioningManager captioningManager = (CaptioningManager)context.getSystemService(Context.CAPTIONING_SERVICE);

จัดการการเปลี่ยนแปลงรูปแบบคำบรรยายวิดีโอ

จากนั้นคุณจะจัดการกับการเปลี่ยนแปลงรูปแบบคำบรรยายวิดีโอได้โดยใช้ CaptioningChangeListener ดังนี้

if (captioningManager != null) {
 
// Define a class to store the CaptionStyle details.
 
CurrentCaptionStyle currentCaptionStyle = new CurrentCaptionStyle;
 
// Define the listeners.
  captioningManager
.addCaptioningChangeListener(new CaptioningChangeListener() {

   
@Override
   
public void onEnabledChanged(boolean enabled) {
     
super.onEnabledChanged(enabled);
     
Log.d(TAG, "onEnabledChanged");
      currentCaptionStyle
.isEnabled = enabled;
   
}

   
@Override
   
public void onLocaleChanged(@Nullable Locale locale) {
     
super.onLocaleChanged(locale);
     
Log.d(TAG, "onLocaleChanged");
      currentCaptionStyle
.locale = locale;
   
}

   
@Override
   
public void onFontScaleChanged(float fontScale) {
     
super.onFontScaleChanged(fontScale);
     
Log.d(TAG, "onFontScaleChanged");
      currentCaptionStyle
.fontScale = fontScale;
   
}

   
@Override
   
public void onUserStyleChanged(@NonNull CaptionStyle userStyle) {
     
super.onUserStyleChanged(userStyle);
     
Log.d(TAG, "onUserStyleChanged");
      currentCaptionStyle
.hasBackgroundColor = userStyle.hasBackgroundColor();
      currentCaptionStyle
.backgroundColor = userStyle.backgroundColor;
      currentCaptionStyle
.backgroundOpcity = userStyle.backgroundColor >>> 24;
      currentCaptionStyle
.hasForegroundColor = userStyle.hasForegroundColor();
      currentCaptionStyle
.foregroundColor = userStyle.foregroundColor;
      currentCaptionStyle
.foregroundOpacity = userStyle.foregroundColor >>> 24;
      currentCaptionStyle
.hasWindowColor = userStyle.hasWindowColor();
      currentCaptionStyle
.windowColor = userStyle.windowColor;
      currentCaptionStyle
.windowOpcity = userStyle.windowColor >>> 24;
      currentCaptionStyle
.hasEdgeColor = userStyle.hasEdgeColor();
      currentCaptionStyle
.edgeColor = userStyle.edgeColor;
      currentCaptionStyle
.hasEdgeType = userStyle.hasEdgeType();
      currentCaptionStyle
.edgeType = userStyle.edgeType;
      currentCaptionStyle
.typeFace = userStyle.getTypeface();
   
}

 
});

คุณสามารถโทรหา getUserStyle() เพื่อรับระบบCaptionStyle โดยตรง:

CaptionStyle systemCaptionStyle = captioningManager.getUserStyle();