How to implement the change system configuration API
1. INTRODUCTION
Today , most of the settings for a Zoom Room or Workspace can be changed within the Zoom admin portal. However, there are still some settings that require you to use either the vendor-provided portal, vendor device web GUI, or physically use the device itself to access its system settings directly. This creates issues when the admin needs to make these changes and cannot do them from the Zoom admin portal where they perform other configurations for a Zoom Room or Workspace.
To apply the system settings on Zoom Rooms devices from the Zoom admin portal, the partner should implement the change system configuration API in the ZRC/ZR Vendor OS (Version 1.7). We allow the admin to change the following system settings:
- Device locale
- Device timezone
- Device date format (dd/mm/yy)
- Device time format (12 vs. 24 hrs)
2. INTERFACES
To support changing the system configurations on the device, the ZRC/ZR Vendor OS incorporates several new features: SystemCapability.ZRAPI_SYSTEM_CAP_CHANGE_SYSTEM_CONFIGURATION capability bit field, ISystemManager.changeSystemConfiguration method, and SystemConfigurationName class. You can include the ZRAPI_SYSTEM_CAP_CHANGE_SYSTEM_CONFIGURATION bit field in the ISystemManager.getCapabilitymethod only if you have successfully implemented the changeSystemConfiguration method. For information on key-value pairs within the changeSystemConfiguration method, please consult the SystemConfigurationName class.
public interface SystemCapability {
public static final int ZRAPI_SYSTEM_CAP_CHANGE_SYSTEM_CONFIGURATION = 0x40000;
}
public interface ISystemManager {
boolean changeSystemConfiguration(String name, String value);
int getCapability();
}
public interface SystemConfigurationName {
/**
* The value is the time zone ID from {@link java.util.TimeZone#getID}
*/
public static final String CONFIG_TIME_ZONE = "time_zone";
/**
* The value is 'en-US', 'zh-CN' and so on.
*/
public static final String CONFIG_LOCALE = "locale";
/**
* The value is one of
* <ol>
* <li>mm/dd/yyyy</li>
* <li>mm/dd/yy</li>
* <li>m/d/yyyy</li>
* <li>yyyy-mm-dd</li>
* <li>yy-mm-dd</li>
* <li>yyyy/mm/dd</li>
* <li>yy/mm/dd</li>
* </ol>
*/
public static final String CONFIG_DATE_FORMAT = "date_format";
/**
* The value should be 12 or 24.
*/
public static final String CONFIG_TIME_FORMAT = "time_format";
}
Additionally, to align device configurations—such as locale, time zone, time format, and date format—with web settings, the ZRC/ZR application must track changes to these configurations. While Android SDK APIs allow for monitoring changes in locale, time zone, and time format, they do not provide a method for tracking specific date format changes, such as "mm/dd/yyyy" or "mm/dd/yy." To address this gap, we introduced the "EVENT_SYSTEM_DATE_FORMAT_CHANGED" intent in the ZRC/ZR Vendor OS API, enabling the application to detect changes in the device's date format:
public interface ZRIntentDefinition {
/**
* Event for vendor system to notify the date format is changed
* <p>
* <b>Intent Extras</b>
* <ul><li>
* <b>format</b> <i>String</i>: one of the values of
* {@link us.zoom.zr.vendoros.system.SystemConfigurationName#CONFIG_DATE_FORMAT}.
* </li></ul>
*/
public static final String EVENT_SYSTEM_DATE_FORMAT_CHANGED =
"us.zoom.zr.vendoros.event.DATE_FORMAT_CHANGED";
}