Sistem altyazı ayarlarını kullanın

Android TV, kullanıcının altyazı tercihlerini merkezi olarak ayarlamasına olanak tanıyan ayarlar sunar. Bu sayede, medya uygulamalarında tutarlı bir deneyim oluşturulabilir.

Bu ayarlar, kullanıcıların altyazıları etkinleştirmesine, tercih ettikleri dili seçmesine ve ihtiyaçlarına göre özel bir altyazı stili tanımlamasına olanak tanır. Kullanıcılar, yaklaşık 3. sınıf okuma düzeyinde basitleştirilmiş altyazıları (Kolay Okuma) tercih edip etmediklerini de belirtebilir.

Bu kılavuzda, sistem tarafından sağlanan altyazı ayarlarının nasıl alınacağı ve uygulamanızdaki altyazılara nasıl uygulanacağı gösterilmektedir.

Seçilen altyazı stilinin önizlemesi de dahil olmak üzere altyazı seçeneklerini Ayarlar > Erişilebilirlik > Altyazılar bölümünde bulabilirsiniz:

Android TV'deki altyazı ayarları menüsü.
Şekil 1. Altyazı ayarları sayfası.

CaptioningManager'ı edinme

Bir etkinlikten Context hizmetini CaptioningManager:

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

Altyazı ayarlarındaki değişiklikleri işleme

CaptioningChangeListener sınıfını uygulayarak altyazı ayarlarındaki değişiklikleri işleyin:

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;
      if (locale == null) {
        currentCaptionStyle.isEasyReaderEnabled = false;
      } else {
        currentCaptionStyle.isEasyReaderEnabled = locale.getVariant().contains("simple");
      }
    }

    @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.backgroundOpacity = 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.windowOpacity = userStyle.windowColor >>> 24;
      currentCaptionStyle.hasEdgeColor = userStyle.hasEdgeColor();
      currentCaptionStyle.edgeColor = userStyle.edgeColor;
      currentCaptionStyle.hasEdgeType = userStyle.hasEdgeType();
      currentCaptionStyle.edgeType = userStyle.edgeType;
      currentCaptionStyle.typeFace = userStyle.getTypeface();
    }

  });
}

Alternatif olarak, getUserStyle yöntemini doğrudan çağırın:

CaptionStyle systemCaptionStyle = captioningManager.getUserStyle();