场景介绍
TTS、Wireless、Network、Input、Sound、Display、Date、Call、General 九类定义了表征终端设备状态的相关字段,如屏幕亮度、日期格式、字体显示大小等,应用程序可以根据自身所拥有的权限对其进行增、删、改、查等操作,并进行相应的场景适配。
例如:TIME_FORMAT——表示日期格式,应用程序可进行读写。
图1 数据表更新过程
接口说明
SystemSettings 提供系统设置的相关接口,包括 TTS、Wireless、Network、Input、Sound、Display、Date、Call、General 九类字段的存储和检索接口。应用程序通过 AppSettings 类提供的方法对其自身的能力进行查询。
接口名 |
描述 |
canShowOverlays(Context context) |
检查指定应用程序是否可以显示在其他应用之上。 |
checkSetPermission(Context context) |
通过应用上下文检查指定的应用是否具有修改系统设置的权限。 |
接口名 |
描述 |
getUri(String name) |
为特定的字段构造URI,用于DataAbility的数据监视。 |
getValue(DataAbilityHelper dataAbilityHelper, String name) |
获取指定字段的值。 |
setValue(DataAbilityHelper dataAbilityHelper, String name, String value) |
设置指定字段的值。 |
字段名 |
字段描述 |
DEFAULT_TTS_PITCH |
文本转语音引擎的默认音调。 |
DEFAULT_TTS_RATE |
文本转语音引擎的默认语速。 |
字段名 |
字段描述 |
BLUETOOTH_STATUS |
蓝牙开启状态。 |
WIFI_STATUS |
WLAN是否启用。 |
WIFI_TO_MOBILE_DATA_AWAKE_TIMEOUT |
从WLAN 断开连接后等待建立移动数据连接时保持唤醒锁的最长时间。 |
字段名 |
字段描述 |
DATA_ROAMING_STATUS |
数据漫游开启状态。 |
NETWORK_PREFERENCE_USAGE |
设置用户经常使用的网络。 |
字段名 |
字段描述 |
DEFAULT_INPUT_METHOD |
设置默认的输入法,并记录此输入法的ID。 |
ACTIVATED_INPUT_METHODS |
已激活的输入法列表。 |
AUTO_CAPS_TEXT_INPUT |
设置文本编辑器是否启用自动大写。 |
字段名 |
字段描述 |
HAPTIC_FEEDBACK_STATUS |
设置是否开启触摸反馈。 |
VIBRATE_WHILE_RINGING |
设置来电响铃时是否震动。 |
DEFAULT_NOTIFICATION_SOUND |
系统默认通知铃声的存储区。 |
字段名 |
字段描述 |
FONT_SCALE |
设置字体大小因子。 |
SCREEN_BRIGHTNESS_STATUS |
设置屏幕亮度。 |
AUTO_SCREEN_BRIGHTNESS |
设置是否打开屏幕亮度自动调节模式。 |
SCREEN_OFF_TIMEOUT |
设置设备屏幕自动休眠时间。 |
字段名 |
字段描述 |
DATE_FORMAT |
设置日期格式。 |
TIME_FORMAT |
设置以12或24小时制显示时间。 |
AUTO_GAIN_TIME |
是否从网络(NITZ)自动获取日期,时间和时区的值。 |
AUTO_GAIN_TIME_ZONE |
是否从网络(NITZ)自动获取时区的值。 |
字段名 |
字段描述 |
SETUP_WIZARD_FINISHED |
识别开机向导是否已经运行过。 |
AIRPLANE_MODE_STATUS |
飞行模式是否开启。 |
DEVICE_NAME |
设备名称。 |
ACCESSIBILITY_STATUS |
设置辅助功能是否可用。 |
字段名 |
字段描述 |
RTT_CALLING_STATUS |
设置来去电是否启动RTT模式进行应答。 |
开发步骤
- 应用程序打开某个 Slice 时,在 OnStart()时,注册相关设置项的回调,并读取一次该设置项的值,进行初始化适配。
场景介绍
TTS、Wireless、Network、Input、Sound、Display、Date、Call、General九类定义了表征终端设备状态的相关字段,如屏幕亮度、日期格式、字体显示大小等,应用程序可以根据自身所拥有的权限对其进行增、删、改、查等操作,并进行相应的场景适配。
例如:TIME_FORMAT——表示日期格式,应用程序可进行读写。
图1 数据表更新过程
点击放大
接口说明
SystemSettings 提供系统设置的相关接口,包括TTS、Wireless、Network、Input、Sound、Display、Date、Call、General 九类字段的存储和检索接口。应用程序通过 AppSettings 类提供的方法对其自身的能力进行查询。
表1 AppSettings的主要接口
接口名
描述
canShowOverlays(Context context)
检查指定应用程序是否可以显示在其他应用之上。
checkSetPermission(Context context)
通过应用上下文检查指定的应用是否具有修改系统设置的权限。
表2 SystemSettings的主要接口
接口名
描述
getUri(String name)
为特定的字段构造URI,用于DataAbility的数据监视。
getValue(DataAbilityHelper dataAbilityHelper, String name)
获取指定字段的值。
setValue(DataAbilityHelper dataAbilityHelper, String name, String value)
设置指定字段的值。
表3 SystemSettings.TTS提供的典型字段
字段名
字段描述
DEFAULT_TTS_PITCH
文本转语音引擎的默认音调。
DEFAULT_TTS_RATE
文本转语音引擎的默认语速。
表4 SystemSettings.Wireless提供的典型字段
字段名
字段描述
BLUETOOTH_STATUS
蓝牙开启状态。
WIFI_STATUS
WLAN是否启用。
WIFI_TO_MOBILE_DATA_AWAKE_TIMEOUT
从WLAN断开连接后等待建立移动数据连接时保持唤醒锁的最长时间。
表5 SystemSettings.Network提供的典型字段
字段名
字段描述
DATA_ROAMING_STATUS
数据漫游开启状态。
NETWORK_PREFERENCE_USAGE
设置用户经常使用的网络。
表6 SystemSettings.Input提供的典型字段
字段名
字段描述
DEFAULT_INPUT_METHOD
设置默认的输入法,并记录此输入法的ID。
ACTIVATED_INPUT_METHODS
已激活的输入法列表。
AUTO_CAPS_TEXT_INPUT
设置文本编辑器是否启用自动大写。
表7 SystemSettings.Sound提供的字段
字段名
字段描述
HAPTIC_FEEDBACK_STATUS
设置是否开启触摸反馈。
VIBRATE_WHILE_RINGING
设置来电响铃时是否震动。
DEFAULT_NOTIFICATION_SOUND
系统默认通知铃声的存储区。
表8 SystemSettings.Display提供的典型字段
字段名
字段描述
FONT_SCALE
设置字体大小因子。
SCREEN_BRIGHTNESS_STATUS
设置屏幕亮度。
AUTO_SCREEN_BRIGHTNESS
设置是否打开屏幕亮度自动调节模式。
SCREEN_OFF_TIMEOUT
设置设备屏幕自动休眠时间。
表9 SystemSettings.Date提供的典型字段
字段名
字段描述
DATE_FORMAT
设置日期格式。
TIME_FORMAT
设置以12或24小时制显示时间。
AUTO_GAIN_TIME
是否从网络(NITZ)自动获取日期,时间和时区的值。
AUTO_GAIN_TIME_ZONE
是否从网络(NITZ)自动获取时区的值。
表10 SystemSettings.General提供的典型字段
字段名
字段描述
SETUP_WIZARD_FINISHED
识别开机向导是否已经运行过。
AIRPLANE_MODE_STATUS
飞行模式是否开启。
DEVICE_NAME
设备名称。
ACCESSIBILITY_STATUS
设置辅助功能是否可用。
表11 SystemSettings.Call提供的典型字段
字段名
字段描述
RTT_CALLING_STATUS
设置来去电是否启动RTT模式进行应答。
开发步骤
应用程序打开某个Slice时,在OnStart()时,注册相关设置项的回调,并读取一次该设置项的值,进行初始化适配。
@Override
public void onStart(Intent intent) {
// ...
dataAbilityHelper = DataAbilityHelper.creator(this);
IDataAbilityObserver dataAbilityObserver = new IDataAbilityObserver() {
@Override
public void onChange() {
String timeFormat = SystemSettings.getValue(dataAbilityHelper, SystemSettings.Date.TIME_FORMAT);
setTimeFormat(timeFormat);
}
};
dataAbilityHelper.registerObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);
}
void setTimeFormat(String timeFormat) {
if ("12".equals(timeFormat)) {
// Display in 12-hour format
} else {
// Display in 24-hour format
}
}
在 onStop()时,解除回调注册。
dataAbilityHelper.unregisterObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);
- 在 onStop() 时,解除回调注册。
dataAbilityHelper.unregisterObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);
更多建议: