开发者控制台

实现对音频描述/隐藏式字幕的读取和订阅 (Fire TV)

实现对音频描述/隐藏式字幕的读取和订阅 (Fire TV)

作为第三方应用开发者,您可能希望能够读取和订阅音频描述 (AD) 和隐藏式字幕 (CC) 设置,以便了解用户是否在其设备上启用了这些设置。本页讨论Fire TV应用如何读取和订阅这些设置。

音频描述

音频描述是一项安全设置,可通过Fire OS添加。

实现音频描述

此设置的键定义为accessibility_audio_descriptions_enabled。仅当用户首次打开该设置时,值才会被添加到安全设置中。默认值为0(关闭),但在设置并打开后,值会变为1(打开)。

读取音频描述设置

由于这是一项常规安全设置,因此可以通过Settings.Secure.getInt(ContentResolver cr, String name, int def) 来读取。有关更多详细信息,请参阅getInt函数(仅提供英文版)。

以下是读取音频描述设置的代码示例:

// 获取音频描述安全设置的字符串
static final String AUDIO_DESCRIPTION = "accessibility_audio_descriptions_enabled";

// 默认值应始终为关闭 (0)。
int audioDescEnabled = Settings.Secure.getInt(getApplicationContext().getContentResolver(),
AUDIO_DESCRIPTION, 0);

// 获取一个布尔值,以确定是否已启用音频描述。
boolean enabled = (audioDescEnabled == 1);

Log.d(TAG, "音频描述" + enabled);

订阅音频描述设置

可以通过为音频描述设置创建和注册ContentObserver来订阅该设置。有关更多详细信息,请参阅ContentObserver API参考

以下是订阅音频描述设置更改的代码示例:

ContentResolver contentResolver = getApplicationContext().getContentResolver();

// 获取音频描述安全设置的字符串
static final String AUDIO_DESCRIPTION = "accessibility_audio_descriptions_enabled";

// 获取音频描述安全设置的URI
static final Uri audio_uri = Settings.Secure.getUriFor
("accessibility_audio_descriptions_enabled");

// 设置Content Observer
ContentObserver observer = new ContentObserver(new Handler()) {
     @Override
     public void onChange(boolean selfChange, Uri uri) {
         // 检查更改后的URI是否与音频描述URI相匹配
        if (uri != null && uri.equals(audio_uri)) {
            int enabled = Settings.Secure.getInt(getApplicationContext().getContentResolver(),
AUDIO_DESCRIPTION, 0);
            Log.d(TAG, "是否已启用音频描述?" + enabled);
        }
    }
};

// 注册以订阅音频描述安全设置变更
contentResolver.registerContentObserver(audio_uri, false, observer);

隐藏式字幕

隐藏式字幕也由Android开源项目 (AOSP) 的一项安全设置存储。

实现隐藏式字幕

使用CaptioningManager读取和订阅是否启用隐藏式字幕的启用设置。要检索CaptioningManager,请使用get SystemService(Context.CAPTIONING_SERVICE)。有关更多详细信息,请参阅CaptioningManagerCAPTIONING_SERVICE Context常量(仅提供英文版)。

读取隐藏式字幕设置

要读取隐藏式字幕设置,请使用CaptioningManager调取isEnabled()。默认值为false(关闭)。

以下是读取(和记录)隐藏式字幕设置的代码示例:

// 从Android导入CaptioningManager
import android.view.accessibility.CaptioningManager;

// 从Context中检索Captioning Manager
CaptioningManager captioningManager = (CaptioningManager) getApplicationContext().getSystemService
(Context.CAPTIONING_SERVICE);

// 读取并记录具体的隐藏式字幕设置。
Log.d(TAG, "隐藏式字幕设置" + captioningManager.isEnabled());

订阅隐藏式字幕设置

要订阅隐藏式字幕设置,请设置CaptioningChangeListener并将其添加到CaptioningManager中。有关更多详细信息,请参阅addCaptioningChangeListener函数(仅提供英文版)。

隐藏式字幕设置更改后,会调用public方法onEnabledChanged(boolean enabled)

以下是订阅隐藏式字幕设置更改的代码示例:

// 从Android导入CaptioningManager
import android.view.accessibility.CaptioningManager;

// 从Context中检索Captioning Manager
CaptioningManager captioningManager = (CaptioningManager) getApplicationContext().getSystemService
(Context.CAPTIONING_SERVICE);

// 设置CaptioningChangeListener。
CaptioningManager.CaptioningChangeListener captionListener = new CaptioningManager.
CaptioningChangeListener() {
    // 在本例中,启用或禁用隐藏式字幕后,会打印一条日志语句。
    @Override
    public void onEnabledChanged(boolean enabled) {
        Log.d(TAG, "是否已启用隐藏式字幕?" + enabled);
    }
};

// 添加用于读取CaptioningManager更改的侦听器
captioningManager.addCaptioningChangeListener(captionListener);

Last updated: 2025年8月22日