HarmonyOS学习路之开发篇—设备管理(设置项)

2023-10-15 08:56:44 浏览数 (1)

设置项开发概述

应用程序可以对系统各类设置项进行查询。例如,三方应用提前注册飞行模式设置项的回调,当用户通过系统设置修改终端的飞行模式状态时,三方应用会检测到此设置项发生变化并进行适配。如检测到飞行模式开启,将进入离线状态;检测到飞行模式关闭,其将重新获取在线数据。

基本概念

系统设置数据项分为TTS(Text To Speech)、Wireless、Network、Input、Sound、Display、Date、Call、General九类,应用程序可以根据自身拥有的权限对其进行操作。

设置项开发

场景介绍

TTS、Wireless、Network、Input、Sound、Display、Date、Call、General九类定义了表征终端设备状态的相关字段,如屏幕亮度、日期格式、字体显示大小等,应用程序可以对其进行查询,并进行相应的场景适配。

接口说明

SystemSettings提供系统设置的相关接口,包括TTS、Wireless、Network、Input、Sound、Display、Date、Call、General九类字段的存储和检索接口。应用程序通过AppSettings类提供的方法对其自身的能力进行查询。

接口名

描述

getUri(String name)

为特定的字段构造URI,用于DataAbility的数据监视。

getValue(DataAbilityHelper dataAbilityHelper, String name)

获取指定字段的值。

字段名

字段描述

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

设置字体大小因子。

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()时,注册相关设置项的回调,并读取一次该设置项的值,进行初始化适配。

代码语言:javascript复制
@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) {
    String timeStr = "12";
    if (timeStr.equals(timeFormat)) {        
        // Display in 12-hour format
    } else {
        // Display in 24-hour format
    }
}

在onStop()时,解除回调注册。

代码语言:javascript复制
dataAbilityHelper.unregisterObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);

0 人点赞