HarmonyOS之系统设置项的查询和使用

举报
Serendipity·y 发表于 2022/02/17 01:26:28 2022/02/17
【摘要】 一、基本概念 应用程序可以对系统各类设置项进行查询,例如,三方应用提前注册飞行模式设置项的回调。当用户通过系统设置修改终端的飞行模式状态时,三方应用会检测到此设置项发生变化并进行适配,如检测到飞行模式开...

一、基本概念

  • 应用程序可以对系统各类设置项进行查询,例如,三方应用提前注册飞行模式设置项的回调。当用户通过系统设置修改终端的飞行模式状态时,三方应用会检测到此设置项发生变化并进行适配,如检测到飞行模式开启,将进入离线状态;检测到飞行模式关闭,其将重新获取在线数据。
  • 系统设置数据项分为 TTS(Text To Speech)、Wireless、Network、Input、Sound、Display、Date、Call、General 九类,应用程序可以根据自身拥有的权限对其进行操作。
  • TTS、Wireless、Network、Input、Sound、Display、Date、Call、General 九类定义了表征终端设备状态的相关字段,如屏幕亮度、日期格式、字体显示大小等,应用程序可以对其进行查询,并进行相应的场景适配。

二、API

  • SystemSettings 提供系统设置的相关接口,包括 TTS、Wireless、Network、Input、Sound、Display、Date、Call、General 九类字段的存储和检索接口,应用程序通过 AppSettings 类提供的方法对其自身的能力进行查询。
  • SystemSettings 的主要接口:
接口名 描述
getUri(String name) 为特定的字段构造URI,用于DataAbility的数据监视
getValue(DataAbilityHelper dataAbilityHelper, String name) 获取指定字段的值
  • SystemSettings.TTS 提供的典型字段:
字段名 字段描述
DEFAULT_TTS_PITCH 文本转语音引擎的默认音调
DEFAULT_TTS_RATE 文本转语音引擎的默认语速
  • SystemSettings.Wireless 提供的典型字段:
字段名 字段描述
BLUETOOTH_STATUS 蓝牙开启状态
WIFI_STATUS WLAN是否启用
WIFI_TO_MOBILE_DATA_AWAKE_TIMEOUT 从WLAN断开连接后等待建立移动数据连接时保持唤醒锁的最长时间
  • SystemSettings.Network 提供的典型字段:
字段名 字段描述
DATA_ROAMING_STATUS 数据漫游开启状态
NETWORK_PREFERENCE_USAGE 设置用户经常使用的网络
  • SystemSettings.Input 提供的典型字段:
字段名 字段描述
DEFAULT_INPUT_METHOD 设置默认的输入法,并记录此输入法的ID
ACTIVATED_INPUT_METHODS 已激活的输入法列表
AUTO_CAPS_TEXT_INPUT 设置文本编辑器是否启用自动大写
  • SystemSettings.Sound 提供的字段:
字段名 字段描述
HAPTIC_FEEDBACK_STATUS 设置是否开启触摸反馈
VIBRATE_WHILE_RINGING 设置来电响铃时是否震动
DEFAULT_NOTIFICATION_SOUND 系统默认通知铃声的存储区
  • SystemSettings.Display 提供的典型字段:
字段名 字段描述
FONT_SCALE 设置字体大小因子
SCREEN_BRIGHTNESS_STATUS 设置屏幕亮度
AUTO_SCREEN_BRIGHTNESS 设置是否打开屏幕亮度自动调节模式
SCREEN_OFF_TIMEOUT 设置设备屏幕自动休眠时间
  • SystemSettings.Date 提供的典型字段:
字段名 字段描述
DATE_FORMAT 设置日期格式
TIME_FORMAT 设置以12或24小时制显示时间
AUTO_GAIN_TIME 是否从网络(NITZ)自动获取日期,时间和时区的值
AUTO_GAIN_TIME_ZONE 是否从网络(NITZ)自动获取时区的值
  • SystemSettings.General 提供的典型字段:
字段名 字段描述
SETUP_WIZARD_FINISHED 识别开机向导是否已经运行过
AIRPLANE_MODE_STATUS 飞行模式是否开启
DEVICE_NAME 设备名称
ACCESSIBILITY_STATUS 设置辅助功能是否可用
  • 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) {
	    String timeStr = "12";
	    if (timeStr.equals(timeFormat)) {        
	        // Display in 12-hour format
	    } else {
	        // Display in 24-hour format
	    }
	}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 在 onStop() 时,解除回调注册:
	dataAbilityHelper.unregisterObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);	

  
 
  • 1

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/118545288

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。