实现对音频描述/隐藏式字幕的读取和订阅 (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)
。有关更多详细信息,请参阅CaptioningManager
类和CAPTIONING_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日