001/*
002 * ===========================================================================================
003 * = COPYRIGHT
004 *          PAX Computer Technology (Shenzhen) Co., Ltd. PROPRIETARY INFORMATION
005 *   This software is supplied under the terms of a license agreement or nondisclosure
006 *   agreement with PAX Computer Technology (Shenzhen) Co., Ltd. and may not be copied or
007 *   disclosed except in accordance with the terms in that agreement.
008 *     Copyright (C) 2017-2023 PAX Computer Technology (Shenzhen) Co., Ltd. All rights reserved.
009 * Description: // Detail description about the function of this module,
010 *             // interfaces with the other modules, and dependencies.
011 * Revision History:
012 * Date                         Author                        Action
013 * 2017/04/01                   PAX                     Create/Add/Modify/Delete
014 * ===========================================================================================
015 */
016
017package com.pax.dal;
018
019import android.content.Context;
020import android.os.Bundle;
021import android.os.IBinder;
022
023import com.pax.dal.entity.ASCaller;
024import com.pax.dal.entity.BaseInfo;
025import com.pax.dal.entity.EBeepMode;
026import com.pax.dal.entity.ENavigationKey;
027import com.pax.dal.entity.ETermInfoKey;
028import com.pax.dal.entity.ETouchMode;
029import com.pax.dal.entity.IAppSwitchListener;
030import com.pax.dal.entity.LanParam;
031import com.pax.dal.entity.NtpServerParam;
032import com.pax.dal.entity.PosMenu;
033
034import java.util.List;
035import java.util.Locale;
036import java.util.Map;
037
038public interface ISys {
039
040    /**
041     * <div class="zh"> 蜂鸣器操作 </div> <div class="en"> Buzzer operation </div>
042     * 
043     * @param mode
044     *            {@link EBeepMode} <div class="zh"> 发声频率<br/>
045     *            {@link EBeepMode#FREQUENCE_LEVEL_0}~{@link EBeepMode#FREQUENCE_LEVEL_6}频率从低到高
046     *            <ul>
047     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_0}</li>
048     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_1}</li>
049     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_2}</li>
050     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_3}</li>
051     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_4}</li>
052     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_5}</li>
053     *            <li>{@link EBeepMode#FREQUENCE_LEVEL_6}</li>
054     *            </ul>
055     *            </div> <div class="en"> Sound frequency </div>
056     * @param timeMs
057     *            <div class="zh"> 发声持续时间 </div> <div class="en"> Lasting time of beep </div>
058     * @return <div class="zh"> 操作结果 </div> <div class="en"> Operation result </div>
059     */
060    public boolean beep(EBeepMode mode, int timeMs);
061
062    /**
063     * <div class="zh"> 按频率参数列表发声</div> <div class="en"> beep with the list of frequency parameters </div>
064     * 
065     * @param params
066     *            <div class="zh"> 频率列表的格式为“频率:时长;频率:时长…”。音频频率单位为赫兹,
067     *            有效范围为(A920mini/A50/A77: 50~4000;A30/A8300/A910S/A920PRO/P100/A920: 50-2750;other: 50-3000),
068     *            时长单位为毫秒,有效范围为0~65535。最多支持100组频率。频率列表参数为“750:100;1500:200”,
069     *            表示以750赫兹播放100毫秒,然后以1500赫兹播放200毫秒。</div>
070     *            <div class="en"> The format of the frequency list is "frequency: duration; frequency: duration...".
071     *            The unit of audio frequency is Hertz, The valid range is
072     *            (A920mini/A50/A77: 50~4000; A30/A8300/A910S/A920PRO/P100/A920: 50-2750; other: 50-3000),
073     *            The duration unit is milliseconds, and the valid range is 0~65535. Supports up to 100 groups of frequencies.
074     *            The frequency list parameters are "750:100; 1500:200", which means playing at 750 Hz for 100 milliseconds,
075     *            and then playing at 1500 Hz for 200 milliseconds.</div>
076     * @return <div class="zh"> 0:成功 其他失败
077     * <ul>
078     * <li>-1:Audio file is not exist, or frequence list invalid</li>
079     * <li>-2:Audio format is not supported</li>
080     * <li>-3:The system volume is zero</li>
081     * <li>-4:Device busy</li>
082     * <li>98:parameter invalid</li>
083     * <li>99:RPC I/O error</li>
084     * <li>100:Not Support for this device</li>
085     * <li>102:Rpc busy</li>
086     * </ul>
087     * </div> <div class="en"> 0:success other:failed
088     * <ul>
089     * <li>-1:Audio file is not exist, or frequence list invalid</li>
090     * <li>-2:Audio format is not supported</li>
091     * <li>-3:The system volume is zero</li>
092     * <li>-4:Device busy</li>
093     * <li>98:parameter invalid</li>
094     * <li>99:RPC I/O error</li>
095     * <li>100:Not Support for this device</li>
096     * <li>102:Rpc busy</li>
097     * </ul>
098     * </div>
099     * @since V2.03.00
100     */
101    int beep(String params);
102
103    /**
104     * <div class="zh"> 判断设备操作权限 </div> <div class="en"> To check whether APK has operating permission by given device
105     * </div>
106     * 
107     * @param packageName
108     *            <div class="zh"> 应用包名 </div> <div class="en"> package name </div>
109     * @param usesPermission
110     *            <div class="zh"> 权限名 </div> <div class="en"> uses permission name </div>
111     * 
112     * @return <div class="zh"> 成功 -true 失败 -false </div> <div class="en"> success -true failed -false </div>
113     * @return
114     */
115    public boolean checkPermission(String packageName, String usesPermission);
116
117    /**
118     * <div class="zh"> 禁用物理键盘, 仅适用于带物理键盘的终端 </div> <div class="en"> disable physical keyboard, apply only to terminal
119     * with keyboard </div>
120     * 
121     * @return <div class="zh">true:成功;false:失败。</div> <div class="en">True:success; False:failure.</div>
122     */
123    public boolean disableKeyEvent();
124
125    /**
126     * <div class="zh">设置是否允许ADB和MTP。如果开启权限检查,需在AndroidManifest下添加以下权限:
127     *  "com.pax.permission.USB_SECURITY"</div> 
128     * <div class="en">Set whether to allow ADB and MTP.If permission checking is enabled, 
129     *  add the following permissions under AndroidManifest :"com.pax.permission.USB_SECURITY"</div>
130     * 
131     * @param enable <div class="zh">true:允许使用ADB和MTP;false:禁用ADB和MTP </div> 
132     * <div class="en">True: enable ADB and MTP;False: disable ADB and MTP</div>
133     * 
134     * @return <div class="zh">true:成功;false:失败</div> <div class="en">True: success;False: failure</div>
135     * 
136     * @since V3.06.00
137     */
138    public boolean enableADBAndMTP(boolean enable);
139
140    /**
141     * <div class="zh"> 启用物理键盘, 仅适用于带物理键盘的终端 </div> <div class="en"> enable physical keyboard, apply only to terminal
142     * with keyboard </div>
143     * 
144     * @return <div class="zh">true:成功;false:失败。</div> <div class="en">true:success; false:failure.</div>
145     */
146    public boolean enableKeyEvent();
147
148    /**
149     * <div class="zh"> 设置设备是否启用导航栏。机器重启后恢复默认。默认值:启用。 </div> 
150     * <div class="en"> Set to enable NavigationBar or not. Restore the default when the machine is restarted. Default: enabled.</div>
151     * 
152     * @param enable <div class="zh">true:可用;false:禁用。</div> <div class="en">true:enable; false:disable.</div>
153     */
154    public void enableNavigationBar(boolean enable);
155
156    /**
157     * <div class="zh"> 设置设备是否启用目标按键 。机器重启后恢复默认。默认值:启用。</div> 
158     * <div class="en"> Set to enable NavigationKey or not. Restore the default when the machine is restarted. Default: enabled.</div>
159     * 
160     * @param key
161     *            {@link ENavigationKey} <div class="zh"> 按键 </div> <div class="en"> NavigationKey
162     *            <ul>
163     *            <li>BACK - key for back</li>
164     *            <li>HOME - key for home</li>
165     *            <li>RECENT - key for recent</li>
166     *            </ul>
167     *            </div>
168     * @param enable
169     *            <div class="zh"> 启用或者不启用 </div> <div class="en"> true or false </div>
170     * 
171     */
172    public void enableNavigationKey(ENavigationKey key, boolean enable);
173
174    /**
175     * <div class="zh"> 设置设备是否启用电源键 。机器重启后恢复默认。默认值:启用。</div> 
176     * <div class="en"> Set to enable PowerKey or disable. Restore the default when the machine is restarted. Default: enabled.</div>
177     * 
178     * @param enable
179     *            <div class="zh">
180     *            <ul>
181     *            <li>true -- 启用</li>
182     *            <li>false -- 不启用</li>
183     *            </ul>
184     *            </div> <div class="en">
185     *            <ul>
186     *            <li>true -- enable</li>
187     *            <li>false -- disable</li>
188     *            </ul>
189     *            </div>
190     * 
191     */
192    public void enablePowerKey(boolean enable);
193    
194    /**
195     * <div class="zh"> 设置设备是否启用状态栏。机器重启后恢复默认。默认值:启用。 </div> 
196     * <div class="en"> Set to enable stautusBar or disable. Restore the default when the machine is restarted. Default: enabled.</div>
197     * 
198     * @param enable
199     *            <div class="zh">
200     *            <ul>
201     *            <li>true -- 启用</li>
202     *            <li>false -- 不启用</li>
203     *            </ul>
204     *            </div> <div class="en">
205     *            <ul>
206     *            <li>true -- enable</li>
207     *            <li>false -- disable</li>
208     *            </ul>
209     *            </div>
210     */
211    public void enableStatusBar(boolean enable);
212
213    /**
214     * <div class="zh"> 获取指定时间段的系统日志 </div> <div class="en"> Gets the app logs through the specified time range </div>
215     * 
216     * @param storePath
217     *            <div class="zh"> Log storage path </div> <div class="en"> Log storage path </div>
218     * 
219     * @param startDate
220     *            <div class="zh"> 格式:YYYY-MM-DD </div> <div class="en"> Format:YYYY-MM-DD </div>
221     * @param endDate
222     *            <div class="zh"> 格式:YYYY-MM-DD </div> <div class="en"> Format:YYYY-MM-DD </div>
223     * @return <div class="zh"> 0:成功 -1:失败 </div> <div class="en"> 0:success -1:faulire </div>
224     * 
225     * 
226     */
227    public int getAppLogs(String storePath, String startDate, String endDate);
228
229    /**
230     * <div class="zh"> 读取底座信息.</div> <div class="en"> read base information </div>
231     * 
232     * @return {@link BaseInfo}
233     * @since V2.02.00
234     */
235    BaseInfo getBaseInfo();
236
237    /**
238     * <div class="zh"> 读取终端日期和时间。 </div> <div class="en"> Get terminal date and time. </div>
239     * 
240     * @return <div class="zh"> 格式 YYYYMMDDhhmmssEE (比如:"2013060617373704" = Thu Jun 06 17:37:37 CST 2013) </div> <div
241     *         class="en"> Format: YYYYMMDDhhmmssEE(for example:"2013060617373704" = Thu Jun 06 17:37:37 CST 2013) </div>
242     */
243    public String getDate();
244
245    /**
246     * <div class="zh"> 获取设备接口版本号 </div> <div class="en"> Get the version of device interface </div>
247     * 
248     * @return <div class="zh"> 设备接口版本号 </div> <div class="en"> the version of device of interface </div>
249     */
250    public String getDevInterfaceVer();
251
252    /**
253     * <div class="zh">获取PED模式</div> <div class="en"> get PED mode </div>
254     *
255     * @return <div class="zh"><ul>
256     *     <li>1.共享模式,可使用模块:IPed、IPedKeyIsolationMixedManager。</li>
257     *     <li>2.隔离模式,可使用模块:IPedKeyIsolation。该模式已经不再维护,请升级固件使用新密钥隔离模式。</li>
258     *     <li>3.混合模式,可使用模块:IPed、IPedKeyIsolation。该模式已经不再维护,请升级固件使用共享模式的的IPedKeyIsolationMixedManager。</li>
259     *     <li>4.新隔离模式,可使用模块:IPedKeyIsolationManager。</li></ul></div>
260     *     <div class="en"><ul>
261     *     <li>1.Shared mode, available modules: IPed、IPedKeyIsolationMixedManager.</li>
262     *     <li>2.Isolation mode, available modules: IPedKeyIsolation. This mode has been deprecated, please upgrade the firmware to use enhanced isolation mode.</li>
263     *     <li>3.Mixed mode, available modules: IPed、IPedKeyIsolation. This mode has been deprecated, please upgrade the firmware to use the shared mode IPedKeyIsolationMixedManager.</li>
264     *     <li>4.Enhanced isolation mode, available modules: IPedKeyIsolationManager.</li></ul></div>
265     * @since V2.02.00
266     */
267    int getPedMode();
268
269    /**
270         * <div class="zh"> 获取PN号 </div> <div class="en"> get device PN</div>
271         * 
272         * @return PN
273         * @since V3.01.00
274         */
275        String getPN();
276
277    /**
278     * <div class="zh"> 系统产生len字节的随机数 </div> <div class="en"> Generating random number of len bytes. </div>
279     * 
280     * @param len
281     *            <div class="zh"> 产生随机数的字节数[0-65535] </div> <div class="en"> the length for generating random number
282     *            [0-65535] </div>
283     * @return <div class="zh"> 随机数组 </div> <div class="en"> Random bytes array. </div>
284     */
285    public byte[] getRandom(int len);
286
287    /**
288     * <div class="zh"> 获取系统语言</div> <div class="en"> get system language</div>
289     * 
290     * @return <div class="zh"> 当前系统语言 </div> <div class="en"> system language </div>
291     * @since V3.00.00
292     */
293    String getSystemLanguage();
294
295    /**
296     * <div class="zh"> 获取终端信息 </div> <div class="en"> Get terminal information </div>
297     * 
298     * @return {@link ETermInfoKey}
299     */
300    public Map<ETermInfoKey, String> getTermInfo();
301
302    /**
303     * <div class="zh"> 获取扩展终端信息。必须要添加权限:"android.permission.READ_PHONE_STATE"权限。<br/>
304     * 格式:xml </div> <div class="en"> get external terminal info. Permissions must be added:"android.permission.READ_PHONE_STATE".<br/>
305     * format:xml </div>
306     *
307     *
308     * @return <div class="zh">终端扩展信息。XML格式,为2级标签,格式如下:<xmp><root> <tagname1>value1</tagname1> <tagname2>value2</tagname2>....</root></xmp>
309     * 标签列表如下表:
310     * <table border="1">
311     *  <tr>
312     *   <th>标签名</th>
313     *   <th>数据格式</th>
314     *   <th>说明</th>
315     *  </tr>
316     *  <tr>
317     *   <td>flashsize</td>
318     *   <td>ASCII</td>
319     *   <td>Flash 大小,格式: XXXXMB。</td>
320     *  </tr>
321     *  <tr>
322     *   <td>rfchip</td>
323     *   <td>ASCII</td>
324     *   <td>射频卡模块类型,格式: XX。</td>
325     *  </tr>
326     *  <tr>
327     *   <td>printer</td>
328     *   <td>ASCII</td>
329     *   <td>打印机型号,格式: XX。</td>
330     *  </tr>
331     *  <tr>
332     *   <td>RAMSize</td>
333     *   <td>ASCII</td>
334     *   <td>RAM 大小,格式: XXXXKB。</td>
335     *  </tr>
336     *  <tr>
337     *   <td>tidkeystate</td>
338     *   <td>ASCII</td>
339     *   <td>TIDKey状态: 0-未上传 1-已上传 2-系统不支持SN KEY。</td>
340     *  </tr>
341     *  <tr>
342     *   <td>securityinfo</td>
343     *   <td>ASCII</td>
344     *   <td>安全固件版本信息。</td>
345     *  </tr>
346     * </table></div>
347     * <div class="en">Terminal extends information.The XML format is level 2 label, and the format is as follows:
348     * <xmp><root> <tagname1>value1</tagname1> <tagname2>value2</tagname2>....</root></xmp>
349     * The list of tags is as follows:
350     * <table border="1">
351     *  <tr>
352     *   <th>Tag name</th>
353     *   <th>Data format</th>
354     *   <th>Description</th>
355     *  </tr>
356     *  <tr>
357     *   <td>flashsize</td>
358     *   <td>ASCII</td>
359     *   <td>Flash size, format: XXXXMB.</td>
360     *  </tr>
361     *  <tr>
362     *   <td>rfchip</td>
363     *   <td>ASCII</td>
364     *   <td>Rf card module type, format: XX.</td>
365     *  </tr>
366     *  <tr>
367     *   <td>printer</td>
368     *   <td>ASCII</td>
369     *   <td>Printer model, format: XX.</td>
370     *  </tr>
371     *  <tr>
372     *   <td>ramsize</td>
373     *   <td>ASCII</td>
374     *   <td>RAM size, format: XXXXKB.</td>
375     *  </tr>
376     *  <tr>
377     *   <td>tidkeystate</td>
378     *   <td>ASCII</td>
379     *   <td>TIDKey status: 0- unuploaded 1- uploaded 2- SN KEY is not supported by the system.</td>
380     *  </tr>
381     *  <tr>
382     *   <td>securityinfo</td>
383     *   <td>ASCII</td>
384     *   <td>Security firmware version information.</td>
385     *  </tr>
386     * </table>
387     * </div>
388     *
389     */
390    public byte[] getTermInfoExt();
391
392    /**
393     * <div class="zh"> 静默安装应用 。如果开启权限检查,需在AndroidManifest下添加以下权限:"com.pax.permission.UPDATE_APP"。</div> 
394     * <div class="en">install app. If permission checking is enabled, add the following permissions under AndroidManifest :
395     * "com.pax.permission.UPDATE_APP".</div>
396     * 
397     * @param path
398     *            <div class="zh"> 安装包绝对路径 </div> <div class="en"> apk absolute path </div>
399     * @return <div class="zh"> 0:成功 其他失败
400     * <ul>
401     * <li>-103:INSTALL_PARSE_FAILED_NO_CERTIFICATES:安装包中没有解析到任何证书。</li>
402     * <li>-99:缺少更新权限错误</li>
403     * <li>-26:INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE:原应用编译的target SDK版本大于22,升级应用编译的target SDK版本不大于22</li>
404     * <li>-25:低版本应用覆盖高版本错误</li>
405     * <li>-22:安装验签失败</li>
406     * <li>-21:文件不可读或不存在</li>
407     * <li>-7:UPDATE_CUSTOMER_ERR:表示以前安装的同名包与新包的签名不同</li>
408     * <li>1:通用异常,服务不可用错误</li>
409     * </ul>
410     * </div> <div class="en"> 0:success other:failed 
411     * <ul>
412     * <li>-103:INSTALL_PARSE_FAILED_NO_CERTIFICATES:if the parser did not find any certificates in the .apk.</li>
413     * <li>-99:UPDATE_PERMISSION_ERROR</li>
414     * <li>-26:INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE:The target SDK version compiled by the original application is greater than 22, and the target SDK version compiled by the upgraded application is not greater than 22.</li>
415     * <li>-25:INSTALL_FAILED_VERSION_DOWNGRADE</li>
416     * <li>-22:INSTALL_FAILED_VERIFICATION_FAILURE</li>
417     * <li>-21:FILE_NOT_READ_EXIST</li>
418     * <li>-7:UPDATE_CUSTOMER_ERR:Indicates that the previously installed package of the same name has a different signature from the new package</li>
419     * <li>1:SERVICE_NOT_AVAILABLE</li>
420     * </ul>
421     * </div>
422     * @since V2.03.00
423     */
424    int installApp(String path);
425
426    /**
427     * 
428     * @return <div class="zh"> true:终端为Debug状态 ;false:终端为Release状态</div> <div class="en"> true: debug status; false:release status</div>
429     */
430    boolean isDebug();
431
432    /**
433     * <div class="zh"> 判断设备是否启用导航栏 </div> <div class="en"> To check is the NavigationBar enable or disable </div>
434     * 
435     * @return <div class="zh">
436     *         <ul>
437     *         <li>true -- 可用</li>
438     *         <li>false -- 不可用</li>
439     *         </ul>
440     *         </div> <div class="en">
441     *         <ul>
442     *         <li>true -- enable</li>
443     *         <li>false -- disable</li>
444     *         </ul>
445     *         </div>
446     */
447    public boolean isNavigationBarEnabled();
448
449    /**
450     * <div class="zh"> 判断设备是否显示导航栏 </div> <div class="en"> To check is NavigationBar visible or invisible </div>
451     * 
452     * @return <div class="zh">
453     *         <ul>
454     *         <li>true -- 显示</li>
455     *         <li>false -- 隐藏</li>
456     *         </ul>
457     *         </div> <div class="en">
458     *         <ul>
459     *         <li>true -- visible</li>
460     *         <li>false -- invisible</li>
461     *         </ul>
462     *         </div>
463     */
464    public boolean isNavigationBarVisible();
465
466    /**
467     * <div class="zh"> 判断设备是否启用目标按键 </div> <div class="en"> To check is the NavigationBar enable or disable </div>
468     * 
469     * @param key
470     *            {@link ENavigationKey}
471     * @return <div class="zh">
472     * 
473     *         </div> <div class="en">
474     *         <ul>
475     *         <li>true -- enable</li>
476     *         <li>false -- disable</li>
477     *         </ul>
478     *         </div>
479     */
480    public boolean isNavigationKeyEnabled(ENavigationKey key);
481
482    /**
483     * <div class="zh"> 获取底座是否在位。</div> <div class="en"> Whether or not the base is in position. </div>
484     * 
485     * @return <div class="zh"> true:在位; false:不在位;</div> <div class="en"> true:in position; false:not in position;
486     *         </div>
487     * @since V2.03.00
488     */
489    boolean isOnBase();
490
491    /**
492     * <div class="zh"> 判断设备是否启用电源键 </div> <div class="en"> To check is the PowerKey enable or disable </div>
493     * 
494     * @return <div class="zh"> *
495     *         <ul>
496     *         <li>true -- 启用</li>
497     *         <li>false -- 未启用</li>
498     *         </ul>
499     *         </div> <div class="en"> *
500     *         <ul>
501     *         <li>true -- enable</li>
502     *         <li>false -- disable</li>
503     *         </ul>
504     *         </div>
505     * 
506     */
507    public boolean isPowerKeyEnabled();
508
509    /**
510     * <div class="zh"> 判断设备是否启用状态栏 </div> <div class="en"> To check is the NavigationBar enable or disable </div>
511     * 
512     * @return <div class="zh">
513     *         <ul>
514     *         <li>true -- 启用</li>
515     *         <li>false -- 不启用</li>
516     *         </ul>
517     *         </div> <div class="en">
518     *         <ul>
519     *         <li>true -- enable</li>
520     *         <li>false -- disable</li>
521     *         </ul>
522     *         </div>
523     */
524    public boolean isStatusBarEnabled();
525
526    /**
527     * <div class="zh"> 判断设备是否显示状态栏 </div> <div class="en"> To check is StatusBar visible or invisible </div>
528     * 
529     * @return <div class="zh">
530     *         <ul>
531     *         <li>true -- 显示</li>
532     *         <li>false -- 隐藏</li>
533     *         </ul>
534     *         </div> <div class="en">
535     *         <ul>
536     *         <li>true -- visible</li>
537     *         <li>false -- invisible</li>
538     *         </ul>
539     *         </div>
540     */
541    public boolean isStatusBarVisible();
542
543    /**
544     * <div class="zh"> 控制4盏LED灯的亮灭状态 提示: 目前仅支持A60、A910、A920、Aries6、Aries8、E500,其中E500只能控制蓝灯 </div> <div class="en"> Control 4 LED lights
545     * on and off status reminder: currently only support A60, A920, A920, Aries6, Aries8, E500, of which E500 can only control blue
546     * light</div>
547     * 
548     * @param ledIndex
549     *            <div class="zh"> LED灯的索引号
550     *            <ul>
551     *            <li>BIT0 红灯</li>
552     *            <li>BIT1 绿灯</li>
553     *            <li>BIT2 黄灯</li>
554     *            <li>BIT3 蓝灯</li>
555     *            <li>BIT4~BIT7 保留</li>
556     *            </ul>
557     *            </div> <div class="en">LED light index
558     *            <ul>
559     *            <li>BIT0 red light</li>
560     *            <li>BIT1 green light</li>
561     *            <li>BIT2 yellow light</li>
562     *            <li>BIT3 blue light</li>
563     *            <li>BIT4~BIT7 reserve</li>
564     *            </ul>
565     *            </div>
566     * @param mode
567     *            <div class="zh"> 0: 熄灭 1: 点亮 2:闪烁(暂未实现) </div> <div class="en"> 0: light off 1: light on
568     *            2:twinkle(Temporarily unrealized)</div>
569     * @since V3.01.00
570     */
571    void ledControl(byte ledIndex, byte mode);
572
573    /**
574     * <div class="zh"> 控制设备提示灯 </div> <div class="en"> Control device notify light</div>
575     * 
576     * @param type
577     *            <div class="zh"> type - 提示灯类型
578     *            <ul>
579     *            <li>0x01 磁卡</li>
580     *            <li>0x02 IC卡</li>
581     *            <li>0x03 非接卡</li>
582     *            <li>0x04 密码键盘</li>
583     *            <li>0x05 指纹</li>
584     *            <li>0x06 摄像头</li>
585     *            <li>0x07 扫码</li>
586     *            <li>0x08 打印机</li>
587     *            <li>0x09 MDB指示灯</li>
588     *            <li>0x0A 呼吸灯</li>
589     *            </ul>
590     *            </div> <div class="en"> type - notifyLight type
591     *            <ul>
592     *            <li>0x01 mag card</li>
593     *            <li>0x02 IC card</li>
594     *            <li>0x03 RF card</li>
595     *            <li>0x04 PED</li>
596     *            <li>0x05 fingerprint</li>
597     *            <li>0x06 Camera</li>
598     *            <li>0x07 scanner</li>
599     *            <li>0x08 printer</li>
600     *            <li>0x09 MDB status indicator</li>
601     *            <li>0x0A Breathing lamp</li>
602     *            </ul>
603     *            </div>
604     * @param mode
605     *            <div class="zh"> 指示灯模式<br/>
606     *            高4位:指示灯的索引,默认为 0<br/>
607     *            低4位:0 关闭 1 打开<br/>
608     * <br/>
609     *            具体产品型号和指示灯对应关系如下表所示:
610     *            <table border="1">
611     *            <tr>
612     *            <th>产品型号</th>
613     *            <th>指示灯类型</th>
614     *            <th>指示灯索引</th>
615     *            </tr>
616     *            <tr>
617     *            <td>PX7A</td>
618     *            <td>磁卡(0x01)</td>
619     *            <td>0:绿灯 1:红灯</td>
620     *            </tr>
621     *            <tr>
622     *            <td>PX7A</td>
623     *            <td>IC卡(0x02)</td>
624     *            <td>0:绿灯 1:红灯</td>
625     *            </tr>
626     *            <tr>
627     *            <td>PX7A</td>
628     *            <td>非接卡(0x03)</td>
629     *            <td>0:logo提示灯</td>
630     *            </tr>
631     *            <tr>
632     *            <td>IM30</td>
633     *            <td>磁卡(0x01)</td>
634     *            <td>0:绿灯 1:红灯 2:蓝灯</td>
635     *            </tr>
636     *            <tr>
637     *            <td>IM30</td>
638     *            <td>IC卡(0x02)</td>
639     *            <td>0:绿灯 1:红灯 2:蓝灯</td>
640     *            </tr>
641     *            <tr>
642     *            <td>IM30</td>
643     *            <td>MDB状态指示灯(0x09)</td>
644     *            <td>0:绿灯 1:红灯 2:蓝灯</td>
645     *            </tr>
646     *            <tr>
647     *            <td>IM30</td>
648     *            <td>呼吸灯 (0x0A)</td>
649     *            <td>0:绿灯 1:红灯 2:蓝灯</td>
650     *            </tr>
651     *            </table>
652     * 
653     *            </div> <div class="en"> notifyLight mode<br/>
654     *            High 4: notifyLight index, defaults to 0.<br/>
655     *            Low 4: 0 close 1 open<br/>
656     * <br/>
657     *            The relationship between the specific product model and the indicator is shown in the following table:
658     *            <table border="1">
659     *            <tr>
660     *            <th>Product model</th>
661     *            <th>notifyLight type</th>
662     *            <th>notifyLight index</th>
663     *            </tr>
664     *            <tr>
665     *            <td>PX7A</td>
666     *            <td>mag card(0x01)</td>
667     *            <td>0:green light 1:red light</td>
668     *            </tr>
669     *            <tr>
670     *            <td>PX7A</td>
671     *            <td>IC card(0x02)</td>
672     *            <td>0:green light 1:red light</td>
673     *            </tr>
674     *            <tr>
675     *            <td>PX7A</td>
676     *            <td>RF card(0x03)</td>
677     *            <td>0:logo notifyLight</td>
678     *            </tr>
679     *            <tr>
680     *            <td>IM30</td>
681     *            <td>mag card(0x01)</td>
682     *            <td>0:green light 1:red light 2: blue light</td>
683     *            </tr>
684     *            <tr>
685     *            <td>IM30</td>
686     *            <td>IC card(0x02)</td>
687     *            <td>0:green light 1:red light 2: blue light</td>
688     *            </tr>
689     *            <tr>
690     *            <td>IM30</td>
691     *            <td>MDB status indicator (0x09)</td>
692     *            <td>0:green light 1:red light 2: blue light</td>
693     *            </tr>
694     *            <tr>
695     *            <td>IM30</td>
696     *            <td>Breathing lamp (0x0A)</td>
697     *            <td>0:green light 1:red light 2: blue light</td>
698     *            </tr>
699     *            </table>
700     *            </div>
701     * @since V3.01.00
702     */
703    void lightControl(byte type, byte mode);
704
705    /**
706     * <div class="zh"> 读取终端系统的银联唯一序列号.</div> <div class="en"> read TUSN </div>
707     * 
708     * @return TUSN
709     * @since V2.00.03
710     */
711    public String readTUSN();
712
713    /**
714     * <div class="zh"> 重启 </div> <div class="en"> Set to reboot the device </div>
715     * 
716     */
717    public void reboot();
718
719    /**
720     * <div class="zh"> 重置状态栏 </div> <div class="en"> Reset the StatusBar </div>
721     * 
722     * @deprecated
723     */
724    public void resetStatusBar();
725
726    /**
727     * <div class="zh"> 设置系统的日期和时间,星期值将自动算出并设置。 </div> <div class="en"> Setting the system date and time. The day of
728     * week will be calculated automatically. </div>
729     * 
730     * @param date
731     *            <div class="zh"> YYMMDDhhmmss (合法范围: 年:(20)00~(20)37; 月:1~12; 日:1~31; 小时: 0~24; 分钟和秒: 0-59). </div>
732     *            <div class="en"> Pointer to date and time parameter. Format: YYMMDDhhmmss(for example:"130606173737" =
733     *            Thu Jun 06 17:37:37 CST 2013) (valid range: year:(20)00~(20)37; month:1~12; date:1~31; hour: 0~24;
734     *            minute and second: 0-59). </div>
735     */
736    public void setDate(String date);
737
738    /**
739     * <div class="zh"> 设置进入设置界面时是否需要密码。如果报不支持异常,请使用{@link #setSettingsNeedPassword(byte[], boolean, ASCaller)}。</div> 
740     * <div class="en">Set is password needed to access setting. If throws not support exception, please use {@link #setSettingsNeedPassword(byte[], boolean, ASCaller)}.</div>
741     * 
742     * @param need
743     * 
744     *            <div class="zh">
745     *            <ul>
746     *            <li>true -- 需要</li>
747     *            <li>false -- 不需要</li>
748     *            </ul>
749     *            </div> <div class="en">
750     *            <ul>
751     *            <li>true -- need</li>
752     *            <li>false -- not need</li>
753     *            </ul>
754     *            </div>
755     * 
756     */
757    public void setSettingsNeedPassword(boolean need);
758
759    /**
760     * <div class="zh"> 设置系统语言 </div> <div class="en"> set system language</div>
761     * 
762     * @param locale
763     *            {@link Locale}
764     * @return <div class="zh"> 0:成功 其他:失败</div> <div class="en"> 0:successful others:failed </div>
765     * @since V3.00.00
766     */
767    int setSystemLanguage(Locale locale);
768
769    /**
770     * <div class="zh"> 设置时区 </div> <div class="en"> set time zone </div>
771     * 
772     * @param timeZone
773     *            <div class="zh"> 格式: continent/city(eg:Asia/Shanghai)</div> <div class="en"> format:
774     *            continent/city(eg:Asia/Shanghai) </div>
775     * @since V3.00.00
776     */
777    void setTimeZone(String timeZone);
778
779    /**
780     * <div class="zh"> 设置设备是否显示导航栏。机器重启后恢复默认。默认:显示。 </div> 
781     * <div class="en"> Set to show NavigationBar or not. Restore the default when the machine is restarted. Default: show.</div>
782     * 
783     * @param show <div class="zh">true:显示;false:隐藏。</div> <div class="en">true:show; false:hide.</div>
784     */
785    public void showNavigationBar(boolean show);
786
787    /**
788     * <div class="zh"> 设置设备是否显示状态栏。机器重启后恢复默认。 默认:显示。</div> 
789     * <div class="en"> Set to show stautusBar or not. Restore the default when the machine is restarted. Default: show.</div>
790     * 
791     * @param show
792     *            <div class="zh">
793     *            <ul>
794     *            <li>true -- 可用</li>
795     *            <li>false -- 不可用</li>
796     *            </ul>
797     *            </div> <div class="en">
798     *            <ul>
799     *            <li>true -- visible</li>
800     *            <li>false -- invisible</li>
801     *            </ul>
802     *            </div>
803     * 
804     */
805    public void showStatusBar(boolean show);
806
807    /**
808     * <div class="zh"> 关机 </div> <div class="en"> Set to shutdown the device </div>
809     * 
810     */
811    public void shutdown();
812
813    /**
814     * <div class="zh"> 切换sim卡 </div> <div class="en"> switch sim card to another. </div>
815     * 
816     * @param num
817     *            <div class="zh"> 1或者2,只支持2张sim卡 </div> <div class="en"> should be 1 or 2,only support two sim cards
818     *            </div>
819     * @since V2.00.01
820     * @return <div class="zh"> 成功返回true,否则返回false </div> <div class="en"> if success, return true, otherwise return
821     *         false </div>
822     */
823    public boolean switchSimCard(int num);
824
825    /**
826     * <div class="zh"> 更改设备触摸模式 </div> <div class="en"> set touch mode to device </div>
827     * 
828     * @param touchMode
829     *            {@link ETouchMode} <div class="zh"> touchMode
830     *            <ul>
831     *            <li>PEN -笔</li>
832     *            <li>FINGER -手指</li>
833     *            </ul>
834     *            </div> <div class="en"> touchMode
835     *            <ul>
836     *            <li>PEN -by pen</li>
837     *            <li>FINGER -by finger</li>
838     *            </ul>
839     *            </div>
840     * 
841     */
842    public void switchTouchMode(ETouchMode touchMode);
843
844    /**
845     * <div class="zh"> 静默卸载应用 。如果开启权限检查,需在AndroidManifest下添加以下权限:"com.pax.permission.UPDATE_APP"。</div> 
846     * <div class="en"> uninstall app. If permission checking is enabled, add the following permissions under AndroidManifest :
847     * "com.pax.permission.UPDATE_APP".</div>
848     * 
849     * @param packgeName
850     *            <div class="zh"> 包名 </div> <div class="en"> package name </div>
851     * @return <div class="zh"> 0:成功 其他失败
852     * <ul>
853     * <li>-101:未知错误</li>
854     * <li>-99:缺少更新权限错误</li>
855     * <li>-50:错误包名或类名</li>
856     * <li>-25:低版本应用覆盖高版本错误</li>
857     * <li>-22:安装验签失败</li>
858     * <li>-21:文件不可读或不存在</li>
859     * <li>-11:获取subId错误</li>
860     * <li>-8:写modem错误</li>
861     * <li>-7:写资源包错误</li>
862     * <li>-6:写PUK错误</li>
863     * <li>-5:写SP错误</li>
864     * <li>-4:RPC open错误</li>
865     * <li>-3:验签错误</li>
866     * <li>-2:解压错误</li>
867     * <li>-1:升级包错误</li>
868     * <li>1:服务不可用错误</li>
869     * <li>2:安装失败错误</li>
870     * <li>3:超时错误</li>
871     * <li>4:获取数据失败</li>
872     * <li>5:未设置USB安全权限</li>
873     * </ul>
874     * </div> <div class="en"> 0:success other:failed 
875     * <ul>
876     * <li>-101:UPDATE_UNKNOWN_ERR</li>
877     * <li>-99:UPDATE_PERMISSION_ERROR</li>
878     * <li>-50:PKG_OR_CLASS_NAME_ERROR</li>
879     * <li>-25:INSTALL_FAILED_VERSION_DOWNGRADE</li>
880     * <li>-22:INSTALL_FAILED_VERIFICATION_FAILURE</li>
881     * <li>-21:FILE_NOT_READ_EXIST</li>
882     * <li>-11:GET_SUBID_ERROR</li>
883     * <li>-8:UPDATE_MODEM_ERR</li>
884     * <li>-7:UPDATE_CUSTOMER_ERR</li>
885     * <li>-6:UPDATE_WRITE_PUK_ERR</li>
886     * <li>-5:UPDATE_WRITE_SP_IMG_ERR</li>
887     * <li>-4:UPDATE_RPC_OPEN_ERR</li>
888     * <li>-3:UPDATE_VERIFY_ERR</li>
889     * <li>-2:UPDATE_UNZIP_ERR</li>
890     * <li>-1:UPDATE_PACKAGE_ERR</li>
891     * <li>1:SERVICE_NOT_AVAILABLE</li>
892     * <li>2:INSTALL_FAIL</li>
893     * <li>3:TIMEOUT_ERR</li>
894     * <li>4:READ_DATA_FAIL</li>
895     * <li>5:NO_USBSECURITY_PERMISSION</li>
896     * </ul>
897     * </div>
898     * @since V2.03.00
899     */
900    int uninstallApp(String packgeName);
901
902   /**
903    * <div class="zh"> 更新固件。如果开启权限检查,需在AndroidManifest下添加以下权限:"com.pax.permission.UPDATE_FIRM"。 </div> 
904    * <div class="en"> update firmware. If permission checking is enabled, add the following permissions under AndroidManifest :
905    * "com.pax.permission.UPDATE_FIRM".</div>
906    * 
907    * @param path
908    *            <div class="zh"> 固件绝对路径 </div> <div class="en"> firmware absolute path </div>
909    * @return <div class="zh"> 0:成功 其他失败
910    * <ul>
911    * <li>-101:未知错误</li>
912    * <li>-99:缺少更新权限错误</li>
913    * <li>-50:错误包名或类名</li>
914    * <li>-25:低版本应用覆盖高版本错误</li>
915    * <li>-22:安装验签失败</li>
916    * <li>-21:文件不可读或不存在</li>
917    * <li>-11:获取subId错误</li>
918    * <li>-10:差分包版本和当前固件版本不一致或version文件不存在</li>
919    * <li>-8:写modem错误</li>
920    * <li>-7:写资源包错误</li>
921    * <li>-6:写PUK错误</li>
922    * <li>-5:写SP错误</li>
923    * <li>-4:RPC open错误</li>
924    * <li>-3:验签错误</li>
925    * <li>-2:解压错误</li>
926    * <li>-1:升级包错误</li>
927    * <li>1:服务不可用错误</li>
928    * <li>2:安装失败错误</li>
929    * <li>3:超时错误</li>
930    * <li>4:获取数据失败</li>
931    * <li>5:未设置USB安全权限</li>
932    * </ul>
933    * </div> <div class="en"> 0:success other:failed 
934    * <ul>
935    * <li>-101:UPDATE_UNKNOWN_ERR</li>
936    * <li>-99:UPDATE_PERMISSION_ERROR</li>
937    * <li>-50:PKG_OR_CLASS_NAME_ERROR</li>
938    * <li>-25:INSTALL_FAILED_VERSION_DOWNGRADE</li>
939    * <li>-22:INSTALL_FAILED_VERIFICATION_FAILURE</li>
940    * <li>-21:FILE_NOT_READ_EXIST</li>
941    * <li>-11:GET_SUBID_ERROR</li>
942    * <li>-10:The differential package version is inconsistent with the current firmware version or the version file does not exist</li>
943    * <li>-8:UPDATE_MODEM_ERR</li>
944    * <li>-7:UPDATE_CUSTOMER_ERR</li>
945    * <li>-6:UPDATE_WRITE_PUK_ERR</li>
946    * <li>-5:UPDATE_WRITE_SP_IMG_ERR</li>
947    * <li>-4:UPDATE_RPC_OPEN_ERR</li>
948    * <li>-3:UPDATE_VERIFY_ERR</li>
949    * <li>-2:UPDATE_UNZIP_ERR</li>
950    * <li>-1:UPDATE_PACKAGE_ERR</li>
951    * <li>1:SERVICE_NOT_AVAILABLE</li>
952    * <li>2:INSTALL_FAIL</li>
953    * <li>3:TIMEOUT_ERR</li>
954    * <li>4:READ_DATA_FAIL</li>
955    * <li>5:NO_USBSECURITY_PERMISSION</li>
956    * </ul>
957    * </div>
958    * @since V2.03.00
959    */
960   int updateFirmware(String path);
961    
962    /**
963     * <div class="zh"> 写CSN </div> <div class="en"> write customer serial number </div>
964     * 
965     * @param csn
966     *            <div class="zh"> CSN 最大 128字节 </div> <div class="en"> CSN maximum 128 bytes </div>
967     */
968    public void writeCSN(String csn);
969    /**
970     * <div class="zh">设置屏幕亮度</div> <div class="en">set screen brightness</div>
971     * 
972     * @param level <div class="zh">亮度等级.[0-100]</div> <div class="en">brightness level.[0-100]</div>
973     * 
974     * @since V3.06.00
975     */
976    void setScreenBrightness(int level);
977    
978    /**
979     * <div class="zh">打开或者关闭打印服务</div> <div class="en">Turn on or off the print service</div>
980     * 
981     * @param context <div class="zh">上下文</div> <div class="en">context</div>
982     * 
983     * @param pkg <div class="zh">打印服务的包名</div> <div class="en">Package name of the print service</div>
984     * 
985     * @param cls <div class="zh">打印服务的类名</div> <div class="en">Class name of the print service</div>
986     * 
987     * @param onOff <div class="zh">开关,true:打开;false:关闭</div> <div class="en">Switch, true:turn on; false:turn off</div>
988     * 
989     * @return <div class="zh">结果,true:成功;false:失败</div> <div class="en">Result, ture:success; false:fail</div>
990         * 
991         * @since V3.07.00
992     */
993    boolean switchPrintService(Context context, String pkg, String cls, boolean onOff);
994    
995    /**
996     * <div class="zh">隐藏或显示系统设置的菜单和快捷设置的开关。调用会清除上一次调用产生的效果。</div> 
997     * <div class="en">Hide or show the system settings menu and quick settings switch. 
998     * The call clears the effect of the last call.</div>
999     * 
1000     * @param posMenu <div class="zh">菜单集合。Map.key: 菜单{@link PosMenu}; Map.value: true表示隐藏,false表示显示。</div> 
1001     * <div class="en">Menu collection.Map.key:Menu, {@link PosMenu}; Map.value: true means hide, false means show.</div>
1002         *
1003         * @since V3.07.00
1004     */
1005    void disablePosMenu(Map<PosMenu, Boolean> posMenu);
1006    
1007    /**
1008     * <div class="zh">设置屏幕休眠时间。到了休眠时间,如果有安装屏保程序,显示屏保,如果没有屏保程序,息屏。</div> 
1009     * <div class="en">Set the screen off time. When it comes time to off screen, display the screensaver if you have it installed, 
1010     * or off screen if you don't have it.</div>
1011     * 
1012     * @param millisecond <div class="zh">屏幕休眠时间。时间必须从“0秒、15秒、30秒、1分钟、2分钟、5分钟、10分钟、30分钟、Integer.MAX_VALUE”中选择。
1013     * 0秒表示立即休眠。Integer.MAX_VALUE表示永不休眠。单位:毫秒。</div>
1014     *  <div class="en">Time of off screen. Time must be chosen from "0 seconds, 15 seconds, 30 seconds, 1 minute, 2 minutes, 5 minutes, 10 minutes, 
1015     *  30 minutes, Integer.MAX_VALUE". 0 seconds means immediate sleep. Integer.MAX_VALUE means never sleep. unit: millisecond.</div>
1016     * 
1017     * @throws Exception
1018     * @since V3.08.00
1019     */
1020    void setScreenOffTime(int millisecond) throws Exception;
1021    
1022    /**
1023     * <div class="zh">获取屏幕休眠时间。</div> <div class="en">Get the screen off time</div>
1024     * 
1025     * @return <div clas="zh">屏幕休眠时间。单位:毫秒。</div> <div class="en">The screen off time. unit:millisecond.</div>
1026     * 
1027     * @throws Exception
1028     * @since V3.08.00
1029     */
1030    int getScreenOffTime() throws Exception;
1031    
1032    /**
1033     * <div class="zh">设置屏保显示时间。</div> <div class="en">Set screen saver display time.</div>
1034     * 
1035     * @param millisecond <div class="zh">屏保显示时间。单位:毫秒。</div> <div class="en">Screen saver display time. unit:millsecond.</div>
1036     * 
1037     * @throws Exception
1038     * @since V3.08.00
1039     */
1040    void setScreenSaverTime(int millisecond) throws Exception;
1041
1042    /**
1043     * <div class="zh">设置USB模式。如果开启权限检查,需在AndroidManifest下添加以下权限:"com.pax.permission.USB_SECURITY"</div> 
1044     * <div class="en">Set USB mode. If permission checking is enabled, add the following permissions under AndroidManifest :
1045     * "com.pax.permission.USB_SECURITY"</div>
1046     *
1047     * @param mode <div class="zh">协议模式。
1048     * <ul>
1049     *  <li>0:禁用ADB和MTP</li>
1050     *  <li>1:默认模式</li>
1051     *  <li>2:文件传输模式</li>
1052     *  <li>3:CCID(虚拟读卡器)模式</li>
1053     *  <li>4:POSVCOM(百富虚拟串口)模式</li>
1054     *  <li>5: USB tethering (RNDIS)</li>
1055     *  <li>6: USB-PC internet share (RNDIS reverse)</li>
1056     *  <li>7: USB ECM网络共享</li>
1057     *  <li>8: USB ECM-HOST网络共享</li>
1058     *  <li>9: 表示开启SDT,MTP</li>
1059     *  <li>10: USB RNDIS no tethering</li>
1060     *  <li>11: RNDIS reverse with serial</li>
1061     *  <li>注: A920 5、A920 7、A930 仅支持模式1、2、3,需要手动重启后生效</li>
1062     * </ul>
1063     * </div>
1064     * <div class="en">Protocol mode.
1065     * <ul>
1066     *  <li>0: Disable ADB and MTP</li>
1067     *  <li>1: Default mode</li>
1068     *  <li>2: File transfer mode</li>
1069     *  <li>3: CCID(Virtual card reader)mode</li>
1070     *  <li>4: POSVCOM(POS Virtual COM Of Pax)mode</li>
1071     *  <li>5: USB tethering (RNDIS)</li>
1072     *  <li>6: USB-PC internet share (RNDIS reverse)</li>
1073     *  <li>7: USB ECM tethering</li>
1074     *  <li>8: USB ECM-HOST tethering</li>
1075     *  <li>9: SDT and MTP are enabled</li>
1076     *  <li>10: USB RNDIS no tethering</li>
1077     *  <li>11: RNDIS reverse with serial</li>
1078     *  <li>Note: A9205, A9207, and A930 only support modes 1, 2, and 3, and need to be manually restarted to take effect</li>
1079     *  </ul>
1080     * </div>
1081     *
1082     * @throws Exception
1083     * @since V3.08.00
1084     */
1085
1086    void setUsbMode(int mode) throws Exception;
1087    
1088    /**
1089     * <div class="zh">设置是否显示USBDevice和USBAccessory权限弹框。</div> <div class="en">Set whether to show USBDevice and USBAccessory permissions dialog.</div>
1090     * 
1091     * @param enable <div class="zh"><ul>
1092     * <li>true:显示弹框,手动确定是否给予权限。</li>
1093     * <li>false:不显示弹框,直接给予权限。</li></ul></div> 
1094     * <div class="en"><ul>
1095     * <li>true:Show dialog, manually determine whether permission is granted.</li>
1096     * <li>false:Don't show dialog, grant permission directly.</li>
1097     * </ul></div>
1098     * @since V3.08.00
1099     */
1100    void enableUsbPermissionDialog(boolean enable);
1101    
1102    /**
1103     * <div class="zh">设置wifi静态IP。wifi网络必须已连接。</div> <div class="en">Set wifi static IP. Wifi network must be connected..</div>
1104     * 
1105     * @param ip <div class="zh">IP地址。</div> <div class="en">IP address.</div>
1106     * 
1107     * @param gateway <div class="zh">网关。</div> <div class="en">Gateway.</div>
1108     * 
1109     * @param networkPrefixLength <div class="zh">网络前缀长度。</div> <div class="en">Network prefix length.</div>
1110     * 
1111     * @param dns1 <div class="zh">DNS1。</div> <div class="en">DNS1.</div>
1112     * 
1113     * @param dns2 <div class="zh">DNS2</div> <div class="en">DNS2.</div>
1114     * 
1115     * @param reconnect <div class="zh">是否重新连接wifi。需要重新连接才能生效。 </div> <div class="en">Whether to reconnect to wifi. A reconnection is required to take effect.</div>
1116     * 
1117     * @return <div class="zh">结果。ture:设置成功 ;false:设置失败。</div> <div class="en">The results. Ture: set up successfully; False: setup failed.</div>
1118     * @since V3.08.00
1119     */
1120    boolean setWifiStaticIp(String ip, String gateway, int networkPrefixLength, String dns1, String dns2, boolean reconnect);
1121    
1122    /**
1123     * <div class="zh">将服务添加到ServiceManager中。</div> <div class="en">Add a service to the ServiceManager.</div>
1124     * 
1125     * @param name <div class="zh">服务名称。</div> <div class="en">The service name.</div>
1126     * 
1127     * @param service <div class="zh">服务对象。</div> <div class="en">The service object.</div>
1128     * @since V3.10.00
1129     */
1130    void addService(String name, IBinder service);
1131    
1132    /**
1133     * <div class="zh">设置是否开启自动确定时区。</div> <div class="en">Set whether to enable automatic time zone determination.</div>
1134     * 
1135     * @param enable <div class="zh">true:开启;false:关闭。</div> <div class="en">true:open; false:off.</div>
1136     * @since V3.10.00
1137     */
1138    void enableAutoTimeZone(boolean enable);
1139    
1140    /**
1141     * <div class="zh">获取自动确定时区是否开启。</div> <div class="en">Gets the automatic determination of whether the time zone is open.</div>
1142     * 
1143     * @return <div class="zh">true:开启;false:关闭。</div> <div class="en">true:open; false:off.</div>
1144     * @since V3.10.00
1145     */
1146    boolean isAutoTimeZone();
1147    
1148    /**
1149     * <div class="zh">设置是否开启自动确定时间和日期。</div> <div class="en">Set whether to enable automatic determination of time and date.</div>
1150     * 
1151     * @param enable <div class="zh">true:开启;false:关闭。</div> <div class="en">true:open; false:off.</div>
1152     * @since V3.10.00
1153     */
1154    void enableAutoTime(boolean enable);
1155    
1156    /**
1157     * <div class="zh">获取自动确定时间和日期是否开启。</div> <div class="en">Gets whether the time and date are enabled automatically.</div>
1158     * 
1159     * @return <div class="zh">true:开启;false:关闭。</div> <div class="en">true:open; false:off.</div>
1160     * @since V3.10.00
1161     */
1162    boolean isAutoTime();
1163    
1164    /**
1165     * <div class="zh">设置屏保程序。</div> <div class="en">Set up the screen saver.</div>
1166     * 
1167     * @param packageNmae <div class="zh">包名。</div> <div class="en">The package name.</div>
1168     * 
1169     * @param component <div class="zh">服务的类名。</div> <div class="en">The class name of the service.</div>
1170     * @since V3.10.00
1171     */
1172    void setScreenSaver(String packageNmae, String component);
1173    
1174    /**
1175     * <div class="zh">修改系统“设置”应用的密码。长度至少7位,至少包含三个数字,三个字母,和一个特殊符号。调用高级权限接口需要传入签名公钥和{@link ASCaller}参数。</div> 
1176     * <div class="en">Change the password for the system Settings application.At least 7 digits in length, including at least three Numbers, three letters, 
1177     *  and a special symbol. Calling the advanced permission interface requires passing in the signature public key and {@link ASCaller} parameters</div>
1178     * 
1179     * @param pubKey <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
1180     * 
1181     * @param password <div class="zh">密码</div> <div class="en">Password</div>
1182     * 
1183     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div> 
1184     * <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
1185     * @since V3.11.00
1186     */
1187    void setSettingsPassword(byte[] pubKey, String password, ASCaller caller);
1188    
1189    /**
1190     * <div class="zh">获取屏保应用的包名。</div> <div class="en">Gets the package name of the screensaver.</div>
1191     * 
1192     * @return <div class="zh">屏保应用的包名。</div> <div class="en">The package name of the screensaver.</div>
1193     * @throws Exception
1194     * @since V3.11.00
1195     */
1196    String getScreenSaver() throws Exception;
1197    
1198    /**
1199     * <div class="zh">设置屏保是否可用。</div> <div class="en">Set whether the screensaver is available.</div>
1200     * 
1201     * @param enable <div class="zh">
1202     * <ul>
1203     * <li>true:可用。</li>
1204     * <li>false:不可用。</li>
1205     * </ul></div> 
1206     * <div class="en">
1207     * <ul>
1208     * <li>true:Available.</li>
1209     * <li>false:Unavailable.</li>
1210     * </ul></div>
1211     * @throws Exception
1212     * @since V3.11.00
1213     */
1214    void enableScreenSaver(boolean enable) throws Exception;
1215    
1216    /**
1217     * <div class="zh">设置屏保激活类型。</div> <div class="en">Set the screen saver activation type.</div>
1218     * 
1219     * @param type <div class="zh">
1220     * <ul>
1221     * <li>0:插入基座时激活。</li>
1222     * <li>1:充电时激活。</li>
1223     * <li>2:插入基座时或者充电时激活。</li>
1224     * </ul></div> <div class="en">
1225     * <ul>
1226     * <li>0:Activate when plugged into the base.</li>
1227     * <li>1:Activate when charging.</li>
1228     * <li>2:Activate when plugged into the base or when charging.</li>
1229     * </ul></div>
1230     * @throws Exception
1231     * @since V3.11.00
1232     */
1233    void setScreenSaverActivateType(int type) throws Exception;
1234    
1235    /**
1236     * <div class="zh">长按电源键弹出密码框,输入密码后才进去"关机/重启"界面,不输入30秒后消失。</div> 
1237     * <div class="en">Long press the power button to pop up the password box, enter the "shutdown/restart" interface after entering the password, and disappear after 30 seconds.</div>
1238     * 
1239     * @param enable <div class="zh">
1240     * <ul>
1241     * <li>true:启用。</li>
1242     * <li>false:不启用。</li>
1243     * </ul></div> <div class="en">
1244     * <ul>
1245     * <li>true:enable.</li>
1246     * <li>false:disable.</li>
1247     * </ul></div>
1248     * 
1249     * @throws Exception
1250     * @since V3.12.00
1251     */
1252    void enableShutdownConfirm(boolean enable) throws Exception;
1253
1254    /**
1255     * <div class="zh">获取当前USB模式。如果开启权限检查,需在AndroidManifest下添加以下权限:"com.pax.permission.USB_SECURITY"</div> 
1256     * <div class="en">Get the current USB mode. If permission checking is enabled, add the following permissions under AndroidManifest :
1257     * "com.pax.permission.USB_SECURITY"</div>
1258     *
1259     * @return <div class="zh">协议模式。
1260     * <ul>
1261     *  <li>0:禁用ADB和MTP</li>
1262     *  <li>1:默认模式</li>
1263     *  <li>2:文件传输模式</li>
1264     *  <li>3:CCID(虚拟读卡器)模式</li>
1265     *  <li>4:POSVCOM(百富虚拟串口)模式</li>
1266     *  <li>5 表示USB tethering (RNDIS)</li>
1267     *  <li>6 表示USB-PC internet share (RNDIS reverse)</li>
1268     *  <li>7 表示USB ECM网络共享</li>
1269     *  <li>8 表示USB ECM-HOST网络共享</li>
1270     *  <li>9 表示开启SDT,MTP</li>
1271     *  <li>10 表示USB RNDIS no tethering(无网络共享)</li>
1272     *  <li>11 表示RNDIS reverse with serial</li>
1273     *  <li>注:A920 5\A920 7\A930仅支持模式1/2/3, 需要手动重启后生效</li>
1274     * </ul>
1275     * </div>
1276     * <div class="en">Protocol mode.
1277     * <ul>
1278     *  <li>0: Disable ADB and MTP</li>
1279     *  <li>1: Default mode</li>
1280     *  <li>2: File transfer mode</li>
1281     *  <li>3: CCID(Virtual card reader)mode</li>
1282     *  <li>4: POSVCOM(POS Virtual COM Of Pax)mode</li>
1283     *  <li>5: Indicates USB tethering (RNDIS)</li>
1284     *  <li>6: USB-PC internet share (RNDIS reverse)</li>
1285     *  <li>7: Indicates USB ECM network sharing</li>
1286     *  <li>8: Indicates the USB ECM-HOST network share</li>
1287     *  <li>9: SDT and MTP are enabled</li>
1288     *  <li>10 USB RNDIS no tethering (no network sharing)</li>
1289     *  <li>11 Indicates that RNDIS reverse with serial</li>
1290     *  <li>Note: A920 5\A920 7\A930 supports only modes 1/2/3 and takes effect after manual restart</li>
1291     *  </ul>
1292     * </div>
1293     *
1294     * @throws Exception
1295     * @since V3.13.00
1296     */
1297    int getUsbMode() throws Exception;
1298    
1299    /**
1300     * <div class="zh">设置是否启用音量键。机器重启后恢复默认。默认值:启用。</div> 
1301     * <div class="en">Sets whether the volume key is enabled. Restore the default when the machine is restarted. Default: enabled.</div>
1302     * 
1303     * @param enable <div class="zh">
1304     *  <ul>
1305     *   <li>true:启用。</li>
1306     *   <li>false:不启用。</li>
1307     *  </ul></div> 
1308     * <div class="en">
1309     *  <ul>
1310     *   <li>true:enable.</li>
1311     *   <li>false:disable.</li>
1312     *  </ul>
1313     * </div>
1314     * 
1315     * @throws Exception
1316     * @since V3.13.00
1317     */
1318    void enableVolumeKey(boolean enable) throws Exception;
1319    
1320    /**
1321     * <div class="zh">判断音量键是否启用。</div> <div class="en">Check whether the volume key is enabled.</div>
1322     * 
1323     * @return <div class="zh">
1324     *  <ul>
1325     *   <li>true:启用。</li>
1326     *   <li>false:不启用。</li>
1327     *  </ul></div> 
1328     * <div class="en">
1329     *  <ul>
1330     *   <li>true:enable.</li>
1331     *   <li>false:disable.</li>
1332     *  </ul>
1333     * </div>
1334     * 
1335     * @throws Exception
1336     * @since V3.13.00
1337     */
1338    boolean isVolumeKeyEnable() throws Exception;
1339    
1340    /**
1341     * <div class="zh">设置是否启用系统OTA通道。</div> <div class="en">Sets whether the system OTA channel is enabled.</div>
1342     * 
1343     * @param enable <div class="zh">
1344     *  <ul>
1345     *   <li>true:启用。</li>
1346     *   <li>false:不启用。</li>
1347     *  </ul></div> 
1348     * <div class="en">
1349     *  <ul>
1350     *   <li>true:enable.</li>
1351     *   <li>false:disable.</li>
1352     *  </ul>
1353     * </div>
1354     * 
1355     * @throws Exception
1356     * @since V3.14.00
1357     */
1358    void enableSystemOTA(boolean enable) throws Exception;
1359    
1360    /**
1361     * <div class="zh">判断系统OTA通道是否启用。</div> <div class="en">Determine whether the system OTA channel is enabled.</div>
1362     * 
1363     * @return <div class="zh">
1364     *  <ul>
1365     *   <li>true:启用。</li>
1366     *   <li>false:不启用。</li>
1367     *  </ul></div> 
1368     * <div class="en">
1369     *  <ul>
1370     *   <li>true:enable.</li>
1371     *   <li>false:disable.</li>
1372     *  </ul>
1373     * </div>
1374     * @throws Exception
1375     * @since V3.14.00
1376     */
1377    boolean isSystemOTAEnable() throws Exception;
1378    
1379    /**
1380     * <div class="zh">设置快捷键扫码结果处理模式。</div> <div class="en">Set the shortcut key to scan the result processing mode.</div>
1381     *
1382     * @param mode <div class="zh">
1383     *  <ul>
1384     *      <li>0:输入到输入框({@link IScanCodec}不支持)。</li>
1385     *      <li>1:发送广播,系统按以下方式发送广播:
1386     *          <p>private static final String SEND_BROADCAST_ACTION = "com.barcode.sendBroadcast";</p>
1387     *          <p>Intent resultIntent = new Intent(SEND_BROADCAST_ACTION);</p>
1388     *          <p>resultIntent.putExtra("BARCODE", content); </p>
1389     *          <p>resultIntent.putExtra("CODE_FORMAT", format);</p>
1390     *          <p>sendBroadcast(resultIntent);</p>
1391     *      </li>
1392     *      <li>2:复制到粘贴板。</li>
1393     *  </ul>
1394     * </div>
1395     * <div class="en">
1396     *  <ul>
1397     *      <li>0:Type into the input box. ({@link IScanCodec} not supported.)</li>
1398     *      <li>1:To send the broadcast, the system sends the broadcast in the following way:
1399     *          <p>private static final String SEND_BROADCAST_ACTION = "com.barcode.sendBroadcast";</p>
1400     *          <p>Intent resultIntent = new Intent(SEND_BROADCAST_ACTION);</p>
1401     *          <p>resultIntent.putExtra("BARCODE", content); </p>
1402     *          <p>resultIntent.putExtra("CODE_FORMAT", format);</p>
1403     *          <p>sendBroadcast(resultIntent);</p>
1404     *      </li>
1405     *      <li>2:Copy to the clipboard.</li>
1406     *  </ul>
1407     * </div>
1408     * @throws Exception
1409     * @since V3.16.00
1410     */
1411    void setScanResultMode(int mode) throws Exception;
1412    
1413    /**
1414     * <div class="zh"> 设置进入设置界面时是否需要密码。</div>
1415     * <div class="en">Set whether a password is required when entering the setting. </div>
1416     *
1417     * @param pubKey <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
1418     * @param need <div class="zh">true:需要;false:不需要。</div> <div class="en">true:need; false: not need.</div>
1419     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div>
1420     *              <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
1421     * @throws Exception
1422     * @since V3.16.00
1423     */
1424    void setSettingsNeedPassword(byte[] pubKey, boolean need, ASCaller caller) throws Exception;
1425    
1426    /**
1427     * <div class="zh">清除最近使用的程序列表。</div> <div class="en">Clears the list of recently used programs.</div>
1428     *
1429     * @param excludePackageNames <div class="zh">不清除的程序包名列表。如果为NULL或者size为0,则清除所有程序。</div>
1430     *                            <div class="en">List of package names not cleared.If NULL or size 0, clear all programs.</div>
1431     * @throws Exception
1432     * @since V3.17.00
1433     */
1434    void removeRecentTasks(List<String> excludePackageNames) throws Exception;
1435    
1436    /**
1437     * <div class="zh">获取应用白名单,白名单中的应用不能卸载。</div>
1438     * <div class="en">Get application whitelist. Whitelist application cannot be uninstalled.</div>
1439     *
1440     * @param pubKey   <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
1441     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div>
1442     *                 <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
1443     * @return <div class="zh">应用白名单。</div> <div class="en">The application whitelist.</div>
1444     * @throws Exception
1445     * @since V3.19.00
1446     */
1447    List<String> getAppsWhitelist(byte[] pubKey, ASCaller caller) throws Exception;
1448
1449    /**
1450     * <div class="zh">设置应用白名单,会覆盖之前的应用白名单。白名单中的应用不能卸载。</div>
1451     * <div class="en">Setting the application whitelist, overrides previous application whitelist. Whitelist applications cannot be uninstalled.</div>
1452     *
1453     * @param pubKey   <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
1454     * @param whitlist   <div class="zh">应用白名单。格式如下:
1455     *                 <xmp><whitelist><whitelistitems name="WhiteListName"><item>pkg_name1</item><item>pkg_name2</item> ... </whitelistitems></whitelist></xmp>
1456     *                 列表按照上边格式生成后,需要百富应用签名。</div>
1457     *                 <div class="en">The application whitelist. Format as follows:
1458     *                 <xmp><whitelist><whitelistitems name="WhiteListName"><item>pkg_name1</item><item>pkg_name2</item> ... </whitelistitems></whitelist></xmp>
1459     *                 After the list is generated in the above format, it needs to be signed by the PAX application signature.</div>
1460     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div>
1461     *                 <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
1462     * @throws Exception
1463     * @since V3.19.00
1464     */
1465    void setAppsWhitelist(byte[] pubKey, byte[] whitlist, ASCaller caller) throws Exception;
1466    
1467    /**
1468     * <div class="zh">文件验签。</div> <div class="en">Verify the file signature.</div>
1469     *
1470     * @param pukType  <div class="zh">
1471     *                      <ul>
1472     *                          <li>1:传统应用签名。</li>
1473     *                      </ul>
1474     *                 </div>
1475     *                 <div class="en">
1476     *                      <ul>
1477     *                          <li>1:Traditional application signatures.</li>
1478     *                      </ul>
1479     *                 </div>
1480     * @param fileAbsPath <div class="zh">文件绝对路径。</div> <div class="en">The absolute path to the file.</div>
1481     * @return <div class="zh">
1482     *              <ul>
1483     *                  <li>true:验签通过。</li>
1484     *                  <li>false:验签失败。</li>
1485     *              </ul>
1486     *          </div>
1487     *          <div class="en">
1488     *              <ul>
1489     *                  <li>true:Validation passed.</li>
1490     *                  <li>false:Validation failed.</li>
1491     *              </ul>
1492     *          </div>
1493     * @throws Exception
1494     * @since V3.19.00
1495     */
1496    boolean verifySign(int pukType, String fileAbsPath) throws Exception;
1497    
1498    /**
1499     * <div class="zh">启用Wi-Fi使用DHCP连接。</div>
1500     * <div class="en">Enable Wi-Fi using DHCP connection.</div>
1501     *
1502     * @return <div class="zh">true:成功; false:失败。</div> <div class="en">True: success; False: failure.</div>
1503     * @throws Exception
1504     * @since V3.19.00
1505     */
1506    boolean enableWiFiDHCP() throws Exception;
1507    
1508    /**
1509     * <div class="zh">设置Launcher。</div> <div class="en">Set the launcher.</div>
1510     *
1511     * @param packageName   <div class="zh">应用包名。</div> <div class="en">Application package name.</div>
1512     * @param activityName  <div class="zh">{Activity包名}.{Activity名称}。</div> <div class="en">{Activity package name}.{Activity name}.</div>
1513     * @param unconditional <div class="zh">
1514     *                  <ul>
1515     *                      <li>true:启动Launcher。</li>
1516     *                      <li>false:弹出Launcher选择框。</li>
1517     *                  </ul>
1518     *                </div>
1519     *                <div class="en">
1520     *                  <ul>
1521     *                      <li>true:Start the Launcher.</li>
1522     *                      <li>false:Pop up the Launcher selection box.</li>
1523     *                  </ul>
1524     *                </div>
1525     * @throws Exception
1526     * @since V3.19.00
1527     */
1528    void setLauncher(String packageName, String activityName, boolean unconditional) throws Exception;
1529
1530    /**
1531     * <div class="zh">自定义快捷键跳转到 action 指定的界面。</div>
1532     * <div class="en">Customize the shortcut key to jump to the specified action interface.</div>
1533     *
1534     * @param action <div class="zh">要启动的Activity的Action。
1535     *                  <ul>
1536     *                  <li> 举例: </li>
1537     *                  <li> android.settings.INTERNAL_STORAGE_SETTINGS 打开存储菜单 </li>
1538     *                  <li> android.settings.LOCATION_SOURCE_SETTINGS  打开位置信息菜单 </li>
1539     *                  </ul>
1540     *               </div>
1541     *               <div class="en">The Action of the Activity to start.
1542     *                  <ul>
1543     *                  <li> example: </li>
1544     *                  <li> android.settings.INTERNAL_STORAGE_SETTINGS Open store menu </li>
1545     *                  <li> android.settings.LOCATION_SOURCE_SETTINGS  The location information menu </li>
1546     *                  </ul>
1547     *               </div>
1548     * @throws Exception
1549     * @since V3.19.00
1550     */
1551    void setShortcutAction(String action) throws Exception;
1552    
1553    /**
1554     * <div class="zh">获取客户资源包版本。</div> <div class="en">Get the customer resource version.</div>
1555     *
1556     * @return <div class="zh">资源包版本。</div> <div class="en">Resource version</div>
1557     * @throws Exception
1558     * @since V3.19.00
1559     */
1560    String getCustomerResVer() throws Exception;
1561    
1562    /**
1563     * <div class="zh">开启或关闭定位服务。</div> <div class="en">Turn location services on or off.</div>
1564     * @param enable <div class="zh">
1565     *                  <ul>
1566     *                      <li>True:开启。</li>
1567     *                      <li>False:关闭。</li>
1568     *                  </ul>
1569     *               </div>
1570     *               <div class="en">
1571     *                  <ul>
1572     *                      <li>True:Turn on.</li>
1573     *                      <li>False:Turn off.</li>
1574     *                  </ul>
1575     *               </div>
1576     * @throws Exception
1577     * @since V3.19.00
1578     */
1579    void enableLocation(boolean enable) throws Exception;
1580    
1581    /**
1582     * <div class="zh">重置网络设置。包括:Wi-Fi,移动数据,蓝牙。</div>
1583     * <div class="en">Reset network settings. Including: Wi-Fi, mobile data, Bluetooth.</div>
1584     *
1585     * @throws Exception
1586     * @since V3.20.00
1587     */
1588    void resetNetworkSettings() throws Exception;
1589    
1590    /**
1591     * <div class="zh">设置应用是否可用。</div> <div class="en">Set whether the app is available. Only Unicom customers are supported.</div>
1592     *
1593     * @param packageName <div class="zh">应用包名。</div> <div class="en">Application package name.</div>
1594     * @param enable <div class="zh">true: PackageManager.COMPONENT_ENABLED_STATE_ENABLED ; false:PackageManager.COMPONENT_ENABLED_STATE_DISABLED。</div>
1595     *               <div class="en">true: PackageManager.COMPONENT_ENABLED_STATE_ENABLED ; false:PackageManager.COMPONENT_ENABLED_STATE_DISABLED。</div>
1596     * @throws Exception
1597     * @since V3.20.00
1598     */
1599    void enableApplication(String packageName, boolean enable) throws Exception;
1600
1601    /**
1602     * <div class="zh">使能百富授权。</div> <div class="en">Enable PAX authorization.</div>
1603     *
1604     * @param enable <div class="zh">true:可用; false:不可用。</div> <div class="en">True: enable; false: disable.</div>
1605     * @throws Exception
1606     * @since V3.22.00
1607     */
1608    void enableAuthDownload(boolean enable) throws Exception;
1609
1610    /**
1611     * <div class="zh">获取读卡器拦截器的版本。</div> <div class="en">Gets the version of the reader interceptor.</div>
1612     *
1613     * @return <div class="zh">读卡器拦截器的版本。</div> <div class="en">The version of the reader interceptor.</div>
1614     * @throws Exception
1615     * @since V3.22.00
1616     */
1617    String getInterceptorVersion() throws Exception;
1618
1619    /**
1620     * <div class="zh">设置开机动画。注意:必须有固件签名。</div> <div class="en">Set boot animation. Note: Must have firmware signature.</div>
1621     *
1622     * @param filePath <div class="zh">开机动画资源文件的路径。</div> <div class="en">The path of the boot animation resource file.</div>
1623     * @throws Exception
1624     * @since V3.23.00
1625     */
1626    void setBootAnimation(String filePath) throws Exception;
1627
1628    /**
1629     * <div class="zh">设置开机Logo。注意:必须有固件签名。</div> <div class="en">Set the boot logo. Note: Must have firmware signature.</div>
1630     *
1631     * @param filePath <div class="zh">开机Logo资源文件的路径。</div> <div class="en">The path of the boot logo resource file.</div>
1632     * @throws Exception
1633     * @since V3.23.00
1634     */
1635    void setBootLogo(String filePath) throws Exception;
1636
1637    /**
1638     * <div class="zh">禁用或者启用短按电源键熄屏。设备重启恢复默认。</div>
1639     * <div class="en">Disable or enable short press the power button to turn off the screen. The device restarts to restore the default.</div>
1640     *
1641     * @param enable <div class="zh">
1642     *                 <ul>
1643     *                   <li>true:短按电源键熄屏。默认。</li>
1644     *                   <li>false:短按电源键不熄屏。</li>
1645     *                 </ul>
1646     *               </div>
1647     *               <div class="en">
1648     *                 <ul>
1649     *                   <li>true: Short press the power button to turn off the screen. default.</li>
1650     *                   <li>false:Short press the power button does not turn off the screen.</li>
1651     *                 </ul>
1652     *               </div>
1653     * @throws Exception
1654     * @since V3.23.00
1655     */
1656    void enableShortPressPowerKey(boolean enable) throws Exception;
1657
1658    /**
1659     * <div class="zh">设置以太网共享网络功能是否可用。需重启设备才能生效。</div>
1660     * <div class="en">Set whether the Ethernet shared network function is available. Need to restart the device to take effect.</div>
1661     *
1662     * @param enable <div class="zh">true:可用; false:不可用。</div> <div class="en">True: enable; false: disable.</div>
1663     * @throws Exception
1664     * @since V3.24.00
1665     */
1666    void enableEthernetTether(boolean enable) throws Exception;
1667
1668    /**
1669     * <div class="zh">设置时间24小时制。</div> <div class="en">Set time 24-hour clock.</div>
1670     *
1671     * @param is24Hour <div class="zh">true: 24小时; false: 12小时。</div> <div class="en">true: 24 hours; false: 12 hours.</div>
1672     *
1673     * @return <div class="zh">true: 设置成功; false: 设置失败。</div> <div class="en">true: success; false: failure.</div>
1674     * @since V3.24.00
1675     */
1676    boolean set24Hour(boolean is24Hour);
1677
1678    /**
1679     * <div class="zh">禁用或者启用底座USB切换。</div> <div class="en">Disable or enable base USB switching.</div>
1680     *
1681     * @param enable <div class="zh">
1682     *                 <ul>
1683     *                   <li>true:切换。默认。</li>
1684     *                   <li>false:不切换。</li>
1685     *                 </ul>
1686     *               </div>
1687     *               <div class="en">
1688     *                 <ul>
1689     *                   <li>true: Switch. default.</li>
1690     *                   <li>false: Don't switch.</li>
1691     *                 </ul>
1692     *               </div>
1693     * @throws Exception
1694     * @since V3.24.00
1695     */
1696    void enableBaseUsb(boolean enable) throws Exception;
1697
1698    /**
1699     * <div class="zh">写入应用签名或固件签名的文件。注意:写入的文件需要符合CustomerResConfig给出的规范,
1700     * 且有应用签名或固件签名,写入文件成功后, 配合资源包使用, 重启机器, 即可让xml文件中的需求生效。</div>
1701     * <div class="en">Write application signature or firmware signature file.
1702     * Note: The written file needs to conform to the specifications given by CustomerResConfig
1703     * and has an application signature or firmware signature. After the file is successfully written,
1704     * use it with the resource package and restart the machine to make the requirements
1705     * in the xml file take effect.</div>
1706     *
1707     * @param filePath <div class="zh">文件路径。</div> <div class="en">File path.</div>
1708     * @throws Exception
1709     * @since V3.24.00
1710     */
1711    void writeCustomerResConfig(String filePath) throws Exception;
1712
1713    /**
1714     * <div class="zh">开启Wi-Fi热点。</div> <div class="en">Turn on the Wi-Fi hotspot.</div>
1715     *
1716     * @param ssid <div class="zh">热点名称。传null则代表只打开热点,不更新参数。</div>
1717     *             <div class="en">Hotspot name. Passing null means that only the hotspot is turned on and the parameters are not updated.</div>
1718     * @param preShareKey <div class="zh">热点密码。</div> <div class="en">Hotspot password.</div>
1719     * @param keyManagement <div class="zh">热点安全性类型。
1720     *                        <ul>
1721     *                          <li>0: NONE</li>
1722     *                          <li>1: WPA_PSK </li>
1723     *                          <li>2: WPA_EAP </li>
1724     *                          <li>3: IEEE8021X</li>
1725     *                          <li>4: WPA2_PSK </li>
1726     *                        </ul>
1727     *                      </div>
1728     *                      <div class="en">Hotspot security type.
1729     *                        <ul>
1730     *                          <li>0: NONE</li>
1731     *                          <li>1: WPA_PSK </li>
1732     *                          <li>2: WPA_EAP </li>
1733     *                          <li>3: IEEE8021X</li>
1734     *                          <li>4: WPA2_PSK </li>
1735     *                        </ul>
1736     *                      </div>
1737     * @return <div class="zh">True: 成功。False:失败。</div> <div class="en">True: success. False: failed.</div>
1738     * @since V3.25.00
1739     */
1740    boolean turnOnWiFiHotspot(String ssid, String preShareKey, int keyManagement);
1741
1742    /**
1743     * <div class="zh">关闭Wi-Fi热点。</div> <div class="en">Turn off the Wi-Fi hotspot.</div>
1744     *
1745     * @return <div class="zh">True: 成功。False:失败。</div> <div class="en">True: success. False: failed.</div>
1746     * @since V3.25.00
1747     */
1748    boolean turnOffWiFiHotspot();
1749
1750    /**
1751     * <div class="zh">获取Wi-Fi热点状态。</div> <div class="en">Get Wi-Fi hotspot status.</div>
1752     *
1753     * @return <div class="zh">1:开启。0:关闭。</div> <div class="en">1: Turn on. 0: Turn off.</div>
1754     * @since V3.25.00
1755     */
1756    int getWiFiHotspotStatus();
1757
1758    /**
1759     * <div class="zh">控制充电控制机制。开启该机制后,充电范围控制在15%-35%,电量低于15%复充,超过35%停止。</div>
1760     * <div class="en">Control the charging limit. After it is turned on, the charging range is controlled at 15%-35%,
1761     * charging starts when the power is below 15%, and charging stops when the power exceeds 35%. </div>
1762     *
1763     * @param limit <div class="zh">true:打开该机制。false:关闭该机制。</div> <div class="en">true: Turn on. false: Turn off.</div>
1764     * @since V3.26.00
1765     */
1766    void setChargeLimit(boolean limit) throws Exception;
1767
1768    /**
1769     * <div class="zh">设置NTP服务器和超时时间。需在AndroidManifest中添加权限:"com.pax.permission.NTP"。</div>
1770     * <div class="en">Set NTP server and timeout. Need to add permission in AndroidManifest: "com.pax.permission.NTP".</div>
1771     *
1772     * @param param {@link NtpServerParam}
1773     *
1774     * @return <div class="zh">成功:true<br>失败:false</div> <div class="en">Success: true <br>Failure: false</div>
1775     * @throws Exception
1776     * @since V3.26.00
1777     */
1778    boolean setNTPServerParam(NtpServerParam param) throws Exception;
1779
1780    /**
1781     * <div class="zh">获取NTP服务器和超时时间。需在AndroidManifest中添加权限:"com.pax.permission.NTP"。</div>
1782     * <div class="en">Get NTP server and timeout. Need to add permission in AndroidManifest: "com.pax.permission.NTP".</div>
1783     *
1784     * @return {@link NtpServerParam}
1785     * @throws Exception
1786     * @since V3.26.00
1787     */
1788    NtpServerParam getNTPServerParam() throws Exception;
1789
1790    /**
1791     * <div class="zh">设置低电量提醒框。</div> <div class="en">Set low battery reminder box.</div>
1792     *
1793     * @param enabled <div class="zh">是否开启
1794     *                <br/>true: 表示开启
1795     *                <br/>false: 表示关闭</div>
1796     *                <div class="en">Whether to open
1797     *                <br/>true: open
1798     *                <br/>false: close</div>
1799     * @throws Exception
1800     * @since V3.28.00
1801     */
1802    void enableBatterySaverPrompt(boolean enabled) throws Exception;
1803
1804    /**
1805     * <div class="zh">强制设备进入休眠状态。</div> <div class="en">Force the device to sleep.</div>
1806     *
1807     * @throws Exception
1808     * @since V3.29.00
1809     */
1810    void goToSleep() throws Exception;
1811
1812    /**
1813     * <div class="zh">设置GPS定位模式。</div> <div class="en">Set GPS positioning mode.</div>
1814     *
1815     * @param mode <div class="zh">定位模式
1816     *             <ul>
1817     *                 <li>1.仅限设备</li>
1818     *                 <li>2.低耗电量</li>
1819     *                 <li>3.高精确度</li>
1820     *             </ul></div>
1821     *             <div class="en">positioning mode
1822     *             <ul>
1823     *                 <li>1. Device only</li>
1824     *                 <li>2. Low power consumption</li>
1825     *                 <li>3. High precision</li>
1826     *             </ul></div>
1827     * @return <div class="zh">成功时返回true,失败时返回false </div>
1828     *         <div class="en">Returns true on success, false on failure</div>
1829     * @throws Exception
1830     * @since V3.29.00
1831     */
1832    boolean setLocationMode(int mode) throws Exception;
1833
1834    /**
1835     * <div class="zh">获取安全相关的版本信息。</div> <div class="en">Get security-related version information.</div>
1836     *
1837     * @return <div class="zh">
1838     *     <table border="1">
1839     *          <tr>
1840     *              <th>KEY名称</th>
1841     *              <th>类型</th>
1842     *              <th>说明</th>
1843     *          </tr>
1844     *          <tr>
1845     *              <th>pciver</th>
1846     *              <th>String</th>
1847     *              <th>PCI Version</th>
1848     *          </tr>
1849     *          <tr>
1850     *              <th>secver</th>
1851     *              <th>String</th>
1852     *              <th>Security Version</th>
1853     *          </tr>
1854     *          <tr>
1855     *              <th>firmver</th>
1856     *              <th>String</th>
1857     *              <th>Firmware Version</th>
1858     *          </tr>
1859     *     </table>
1860     *     </div>
1861     *     <div class="en">
1862     *     <table border="1">
1863     *          <tr>
1864     *              <th>KEY</th>
1865     *              <th>type</th>
1866     *              <th>Description</th>
1867     *          </tr>
1868     *          <tr>
1869     *              <th>pciver</th>
1870     *              <th>String</th>
1871     *              <th>PCI Version</th>
1872     *          </tr>
1873     *          <tr>
1874     *              <th>secver</th>
1875     *              <th>String</th>
1876     *              <th>Security Version</th>
1877     *          </tr>
1878     *          <tr>
1879     *              <th>firmver</th>
1880     *              <th>String</th>
1881     *              <th>Firmware Version</th>
1882     *          </tr>
1883     *     </table>
1884     *     </div>
1885     * @throws Exception
1886     * @since V3.29.00
1887     */
1888    Bundle getSecurityInfo() throws Exception;
1889
1890
1891    /**
1892     * <div class="zh">开启Wi-Fi热点。</div> <div class="en">Turn on the Wi-Fi hotspot.</div>
1893     *
1894     * @param ssid <div class="zh">热点名称。传null则代表只打开热点,不更新参数。</div>
1895     *             <div class="en">Hotspot name. Passing null means that only the hotspot is turned on and the parameters are not updated.</div>
1896     * @param preShareKey <div class="zh">热点密码。</div> <div class="en">Hotspot password.</div>
1897     * @param keyManagement <div class="zh">热点安全性类型。
1898     *                        <ul>
1899     *                          <li>0: NONE</li>
1900     *                          <li>1: WPA_PSK </li>
1901     *                          <li>2: WPA_EAP </li>
1902     *                          <li>3: IEEE8021X</li>
1903     *                          <li>4: WPA2_PSK </li>
1904     *                        </ul>
1905     *                      </div>
1906     *                      <div class="en">Hotspot security type.
1907     *                        <ul>
1908     *                          <li>0: NONE</li>
1909     *                          <li>1: WPA_PSK </li>
1910     *                          <li>2: WPA_EAP </li>
1911     *                          <li>3: IEEE8021X</li>
1912     *                          <li>4: WPA2_PSK </li>
1913     *                        </ul>
1914     *                      </div>
1915     * @param channel <div class="zh">信道
1916     *                  <ul>
1917     *                      <li>自动选择信道:0</li>
1918     *                      <li>2.4G信道:1-11</li>
1919     *                      <li>5G信道:36,40,44,48,149,153,157,161,165</li>
1920     *                  </ul></div>
1921     *                <div class="en">Channel
1922     *                  <ul>
1923     *                      <li>Auto select channel: 0</li>
1924     *                      <li>2.4G channel: 1-11</li>
1925     *                      <li>5G channels: 36, 40, 44, 48, 149, 153, 157, 161, 165</li>
1926     *                  </ul></div>
1927     * @return <div class="zh">True: 成功。False:失败。</div> <div class="en">True: success. False: failed.</div>
1928     * @throws Exception
1929     * @since V3.30.00
1930     */
1931    boolean turnOnWiFiHotspot(String ssid, String preShareKey, int keyManagement, int channel) throws Exception;
1932
1933    /**
1934     * <div class="zh">获取屏幕亮度</div> <div class="en">get screen brightness</div>
1935     *
1936     * @return <div class="zh">当前屏幕亮度</div> <div class="en">Current screen brightness</div>
1937     * @since V3.30.00
1938     */
1939    int getScreenBrightness() throws Exception;
1940
1941    /**
1942     * <div class="zh">使能大容量存储器挂载。</div> <div class="en">Enable mass storage mounts.</div>
1943     *
1944     * @param enable <div class="zh">是否启用
1945     *                <br/>true: 表示启用挂载
1946     *                <br/>false: 表示禁用挂载</div>
1947     *                <div class="en">Whether to enable
1948     *                <br/>true: enable mount
1949     *                <br/>false: disable mount</div>
1950     * @throws Exception
1951     * @since V3.29.00
1952     */
1953    void enableMassStorage(boolean enable) throws Exception;
1954
1955    /**
1956     * <div class="zh">设置ECM静态IP(设备必须已经是"USB ECM网络共享模式")。</div> <div class="en">Set ECM static IP (device must already be in "USB ECM tethering mode").</div>
1957     *
1958     * @param ipAddress <div class="zh">IP地址 </div> <div class="en">IP address</div>
1959     * @param networkPrefixLength <div class="zh">网络前缀长度 </div> <div class="en">network prefix length</dic>
1960     *
1961     * @return <div class="zh">true: 设置成功, false: 设置失败 </div> <div class="en">true: set successfully, false: set failed</div>
1962     * @throws Exception
1963     * @since V3.30.00
1964     */
1965    boolean setEcmStaticIP(String ipAddress, int networkPrefixLength) throws Exception;
1966
1967    /**
1968     * <div class="zh">获取ECM静态IP。</div> <div class="en">Get ECM static IP.</div>
1969     *
1970     * @return <div class="zh">静态IP</div> <div class="en">static IP</div>
1971     * @throws Exception
1972     * @since V3.30.00
1973     */
1974    String getEcmStaticIP() throws Exception;
1975
1976    /**
1977     * <div class="zh">锁定终端。</div> <div class="en">lock the terminal.</div>
1978     *
1979     * @param pubKey   <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
1980     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div>
1981     *                 <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
1982     * @throws Exception
1983     * @since V3.30.00
1984     */
1985    void lockTerminal(byte[] pubKey, ASCaller caller) throws Exception;
1986
1987
1988    /**
1989     * <div class="zh">解锁终端。</div> <div class="en">unlock the terminal.</div>
1990     *
1991     * @param pubKey   <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
1992     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div>
1993     *                 <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
1994     * @throws Exception
1995     * @since V3.30.00
1996     */
1997    void unlockTerminal(byte[] pubKey, ASCaller caller) throws Exception;
1998
1999
2000    /**
2001     * <div class="zh">查询终端锁定的状态。</div> <div class="en">get the lock status of a terminal.</div>
2002     *
2003     * @param pubKey   <div class="zh">经过PAX签名的公钥。</div> <div class="en">Public key signed by PAX.</div>
2004     * @param caller <div class="zh">高级权限接口的回调。{@link ASCaller}</div>
2005     *                 <div class="en">Callbacks to the advanced interfaces. see {@link ASCaller}</div>
2006     * @throws Exception
2007     * @return <div class="zh">终端状态(true:Lock false:unLock) 。</div> <div class="en">terminal status(true:Lock false:unLock) .</div>
2008     * @since V3.30.00
2009     */
2010    boolean getLockTerminalStatus(byte[] pubKey, ASCaller caller) throws Exception;
2011
2012    /**
2013     * <div class="zh">安装wifi证书,需申请权限"com.pax.permission.WIFICERT_INSTALL"。
2014     * </div> <div class="en">To install the wifi certificate, add the following permissions under AndroidManifest :"com.pax.permission.WIFICERT_INSTALL".</div>
2015     *
2016     * @param cert <div class="zh">证书数据,需要签名 </div>
2017     *             <div class="en">Certificate data, needs to be signed</div>
2018     * @param certName <div class="zh">证书名称 </div> <div class="en">Certificate name</div>
2019     * @param isP12 <div class="zh">是否是pkcs12格式 </div> <div class="en">Is it in pkcs12 format</div>
2020     * @param certPwd <div class="zh">如果是pkcs12格式,需指定密码 </div> <div class="en">If it is in pkcs12 format, you need to specify the password</div>
2021     * @return <div class="zh">true:成功 false:失败  </div>
2022     *         <div class="en">true: success false: failure</div>
2023     * @throws Exception
2024     * @since V3.30.00
2025     */
2026    boolean installWifiCertificate(byte[] cert, String certName, boolean isP12, String certPwd) throws Exception;
2027
2028    /**
2029     * <div class="zh">设置24小时重启的时间点<br/>
2030     * 当调用接口设置一个新的重启时间点后,会立刻生效,按更新的设置时间点重启。</div>
2031     * <div class="en">Set a 24-hour reboot time<br/>
2032     * When calling the interface to set a new restart time point, it will take effect immediately, and restart according to the updated set time point.</div>
2033     *
2034     * @param time <div class="zh">重启的时间点,24小时制,格式为hh:mm:ss,个位数需在前补0,例如08:30:00 </div>
2035     *             <div class="en">The reboot time, 24-hour format, the format is hh:mm:ss,
2036     *             the single digit needs to be filled with 0, such as 08:30:00</div>
2037     * @throws Exception
2038     * @since V3.31.00
2039     */
2040    void setRebootTime(String time) throws Exception;
2041
2042    /**
2043     * <div class="zh">获取屏幕自动旋转状态</div>
2044     * <div class="en">Gets the automatic screen rotation status.</div>
2045     *
2046     * @return  <div class="zh">true:自动旋转屏幕开启 false:自动旋转屏幕关闭  </div>
2047     *             <div class="en">true: automatic screen rotation is enabled false: automatic screen rotation is disabled</div>
2048     * @throws Exception
2049     * @since V3.32.00
2050     */
2051    boolean isAutomaticRotation() throws Exception;
2052
2053    /**
2054     * <div class="zh">设置屏幕自动旋转</div>
2055     * <div class="en">Set automatic screen rotation</div>
2056     *
2057     * @param isAutomaticRotation <div class="zh">true:开启屏幕自动旋转 - false:关闭屏幕自动旋转 </div>
2058     *             <div class="en">true: enables automatic screen rotation. - false: disables automatic screen rotation</div>
2059     *
2060     * @return <div class="zh">true:成功 false:失败 </div>
2061     *         <div class="en">true: succeeds. false: fails</div>
2062     * @throws Exception
2063     * @since V3.32.00
2064     */
2065    boolean setAutomaticRotation(boolean isAutomaticRotation) throws Exception;
2066
2067    /**
2068     * <div class="zh">设置固定时间点重启</div>
2069     * <div class="en">Enable or disable reboot at a fixed time</div>
2070     *
2071     * @param enable <div class="zh">true:开启固定时间点重启 false:关闭固定时间点重启 </div>
2072     *             <div class="en">true: enables the reboot at a fixed time. false: disables the reboot at a fixed time</div>
2073     * @throws Exception
2074     * @since V3.32.00
2075     */
2076    void setRebootTimeEnable(boolean enable) throws Exception;
2077
2078    /**
2079     * <div class="zh">关闭开启系统截图功能。</div>
2080     * <div class="en">Disable or enable the system screenshot function.</div>
2081     *
2082     * @param enable <div class="zh">true:开启系统截图 false:关闭系统截图 </div>
2083     *             <div class="en">true: enable system screenshot. false: disable system screenshot</div>
2084     * @throws Exception
2085     * @since V3.32.00
2086     */
2087    void enableScreenshot(boolean enable) throws Exception;
2088
2089    /**
2090     * <div class="zh">更新设备的时区数据<br/>
2091     * 注意:调用后需重启设备才能生效。</div>
2092     * <div class="en">Update the time zone data of the device<br/>
2093     * Note: The call takes effect only after the device is restarted.</div>
2094     *
2095     * @param filePath <div class="zh">时区数据库的路径 </div>
2096     *             <div class="en">Path to the time zone database</div>
2097     * @throws Exception
2098     * @since V3.32.00
2099     */
2100    void updateSystemTimeZoneData(String filePath) throws Exception;
2101
2102
2103    /**
2104     * <div class="zh">使用客制化关机界面</div>
2105     * <div class="en">Use the customized power off UI</div>
2106     *
2107     * @param enable <div class="zh">true:开启 false:关闭 </div>
2108     *               <div class="en">true: enable false: disable</div>
2109     * @throws Exception
2110     * @since V3.32.00
2111     */
2112    void showCustomizedPowerOffUI(boolean enable) throws Exception;
2113
2114    /**
2115     * <div class="zh">获取24小时重启的时间点</div>
2116     * <div class="en">Get a 24-hour reboot time</div>
2117     *
2118     * @return <div class="zh">重启时间点</div>
2119     *         <div class="en">reboot time</div>
2120     * @throws Exception
2121     * @since V3.32.00
2122     */
2123    String getRebootTime() throws Exception;
2124
2125    /**
2126     * <div class="zh">设置终端信息收集</div>
2127     * <div class="en">Set terminal information collection</div>
2128     *
2129     * @param enable <div class="zh">true:表示开启 false:表示关闭 </div>
2130     *             <div class="en">true: enable false: disable</div>
2131     * @throws Exception
2132     * @since V3.32.00
2133     */
2134    void setInfoCollect(boolean enable) throws Exception;
2135
2136    /**
2137     * <div class="zh">获取短按电源键是否被禁用</div>
2138     * <div class="en">Gets whether short press of the power button is disabled</div>
2139     *
2140     * @return  <div class="zh">true表示禁用短按电源键不熄屏,false表示开启短按电源键可以熄屏。 </div>
2141     *             <div class="en">true: disables the power button to turn off the screen.
2142     *             false: enables the power button to turn off the screen.</div>
2143     * @throws Exception
2144     * @since V3.32.00
2145     */
2146    boolean isShortPressPowerKeyDisabled() throws Exception;
2147
2148    /**
2149     * <div class="zh">设置是否加载最近任务列表<br/>
2150     * 若设置为加载,则设备重启后可显示关机前的任务记录。若设置为不加载,则显示为空</div>
2151     * <div class="en">Set whether to load the recent task list<br/>
2152     * If set to load, the task records before shutdown are displayed after the device is restarted. If it is set to not load, it is empty.
2153     * </div>
2154     *
2155     * @param enable <div class="zh">true 表示加载(默认), false 表示不加载</div>
2156     *         <div class="en">true means load (default), false means not load</div>
2157     * @throws Exception
2158     * @since V3.33.00
2159     */
2160    void setLoadRecentTasks(boolean enable) throws Exception;
2161
2162    /**
2163     * <div class="zh">设置字体大小</div>
2164     * <div class="en">Set font size</div>
2165     *
2166     * @param font <div class="zh">0:小 1:默认(正常) 2:大 3:最大 </div>
2167     *         <div class="en">0: small 1: default (normal) 2: large 3: largest</div>
2168     * @throws Exception
2169     * @since V3.33.00
2170     */
2171    void setFontScale(int font) throws Exception;
2172
2173    /**
2174     * <div class="zh">获取是否自动调节亮度模式</div>
2175     * <div class="en">Get whether to automatically adjust brightness mode</div>
2176     *
2177     * @return <div class="zh">true:自动亮度模式,false:手动模式</div>
2178     *         <div class="en">true: automatic brightness mode, false: manual mode</div>
2179     * @throws Exception
2180     * @since V3.33.00
2181     */
2182    boolean isAutomaticBrightness() throws Exception;
2183
2184    /**
2185     * <div class="zh">设置自动调节亮度模式</div>
2186     * <div class="en">Set the automatic brightness mode</div>
2187     *
2188     * @param isAutomatic <div class="zh">true:自动亮度模式,false:手动模式</div>
2189     *         <div class="en">true: automatic brightness mode, false: manual mode</div>
2190     * @throws Exception
2191     * @since V3.33.00
2192     */
2193    void setBrightnessMode(boolean isAutomatic) throws Exception;
2194
2195    /**
2196     * <div class="zh">获取系统默认桌面包名</div>
2197     * <div class="en">Get the system default launcher package name</div>
2198     *
2199     * @throws Exception
2200     * @since V4.00.00
2201     */
2202    String getDefaultLauncherPackageName() throws Exception;
2203
2204    /**
2205     * <div class="zh">获取系统默认桌面的Activity的名字。</div>
2206     * <div class="en">Get the system default launcher activity name</div>
2207     *
2208     * @throws Exception
2209     * @since V4.00.00
2210     */
2211    String getDefaultLauncherActivityName() throws Exception;
2212
2213    /**
2214     * <div class="zh">设置允许系统启动“默认桌面”,而不弹出选择对话框,即使有几个桌面。</div>
2215     * <div class="en">Set startup "Default Launcher".</div>
2216     *
2217     * @param unconditional <div class="zh">true表示进入默认桌面而没有弹出选择对话框</div>
2218     *                      <div class="en:>true means to enter the default launcher without popping up the selection dialog</div>
2219     * @throws Exception
2220     * @since V4.00.00
2221     */
2222    void setDefaultLauncher(boolean unconditional) throws Exception;
2223
2224    /**
2225     * <div class="zh">蜂鸣器立即发出一声“嘀”,持续时间为 100ms。</div>
2226     * <div class="en">The buzzer immediately emits a "beep" for 100ms.</div>
2227     *
2228     * @since V4.01.00
2229     */
2230    void beep();
2231
2232    /**
2233     * <div class="zh">屏蔽关机菜单中的紧急拨号功能。</div>
2234     * <div class="en">Block the emergency dial function in the shutdown menu.</div>
2235     *
2236     * @param disable <div class="zh">true 表示屏蔽, false 表示不屏蔽</div>
2237     *         <div class="en">true means blocking, false means not blocking</div>
2238     * @since V4.02.00
2239     * @throws Exception
2240     */
2241    void disableEmergency(boolean disable) throws Exception;
2242
2243    /**
2244     * <div class="zh">屏蔽关机菜单中的系统截图功能。</div>
2245     * <div class="en">Block the system screenshot function in the shutdown menu.</div>
2246     *
2247     * @param disable <div class="zh">true 表示屏蔽, false 表示不屏蔽</div>
2248     *         <div class="en">true means blocking, false means not blocking</div>
2249     * @since V4.02.00
2250     * @throws Exception
2251     */
2252    void disableScreenshot(boolean disable) throws Exception;
2253
2254    /**
2255     * <div class="zh">设置监听应用。</div>
2256     * <div class="en">Set application switch listener.</div>
2257     *
2258     * @param isOpen <div class="zh">true:打开服务 false:关闭服务</div>
2259     *         <div class="en">true: open the service false: close the service</div>
2260     * @param listener <div class="zh">{@link IAppSwitchListener} 注: true时,listener不能为null. </div>
2261     *                 <div class="en">{@link IAppSwitchListener} Note: When true, listener cannot be null.</div>
2262     * @since V4.03.00
2263     * @throws Exception
2264     */
2265    void setAppSwitchListener(boolean isOpen, IAppSwitchListener listener) throws Exception;
2266
2267    /**
2268     * <div class="zh">设置显示大小。</div>
2269     * <div class="en">Set display size.</div>
2270     *
2271     * @param mode <div class="zh">0:小 1:默认(正常) 2:大 其它值:非法 </div>
2272     *         <div class="en">0: Small 1: Default (normal) 2: Large Other values: illegal</div>
2273     * @since V4.03.00
2274     * @throws Exception
2275     */
2276    void setDisplaySize(int mode) throws Exception;
2277
2278    /**
2279     * <div class="zh">设置Reboot重启模式。</div>
2280     * <div class="en">Set reboot mode.</div>
2281     *
2282     * @param mode <div class="zh">1: 48小时重启 </div>
2283     *         <div class="en">1: reboot in 48 hours</div>
2284     * @since V4.05.00
2285     * @throws Exception
2286     */
2287    void setRebootMode(byte mode) throws Exception;
2288
2289    /**
2290     * <div class="zh">获取定时重启开关的状态</div>
2291     * <div class="en">Get the status of the scheduled reboot switch</div>
2292     *
2293     * @return  <div class="zh">true:开启定时重启 false:关闭定时重启 </div>
2294     *             <div class="en">true: enable scheduled reboot false: disable scheduled reboot</div>
2295     * @throws Exception
2296     * @since V4.05.00
2297     */
2298    boolean getRebootTimeEnabled() throws Exception;
2299
2300    /**
2301     * <div class="zh">设置usb虚拟以太网配置。</div>
2302     * <div class="en">Set USB virtual Ethernet configuration.</div>
2303     *
2304     * @param iface <div class="zh">ecm0或rndis0或rndis_host0 </div>
2305     *         <div class="en">ecm0 or rndis0 or rndis_host0.</div>
2306     * @param param <div class="zh">{@link LanParam}</div>
2307     *              <div class="en">{@link LanParam}</div>
2308     * @since V4.05.00
2309     */
2310    void setUsbVirtualEthConfig(String iface, LanParam param) throws Exception;
2311
2312    /**
2313     * <div class="zh">获取以太网IP地址信息。</div>
2314     * <div class="en">Get USB virtual Ethernet configuration.</div>
2315     *
2316     * @param iface <div class="zh">ecm0或rndis0或rndis_host0 </div>
2317     *         <div class="en">ecm0 or rndis0 or rndis_host0.</div>
2318     *
2319     * @return <div class="zh">{@link LanParam}</div>
2320     *              <div class="en">{@link LanParam}</div>
2321     * @since V4.05.00
2322     */
2323    LanParam getUsbVirtualEthConfig(String iface) throws  Exception;
2324
2325    /**
2326     * <div class="zh">是否允许关机时接入适配器自动开机。</div>
2327     * <div class="en">Whether to allow the access adapter to turn on automatically when shutdown.</div>
2328     *
2329     * @param disable <div class="zh">true:允许 false:禁止 </div>
2330     *         <div class="en">true: allow false: forbid</div>
2331     * @return <div class="zh">true:成功; false:失败。</div> <div class="en">True: success; False: failure.</div>
2332     * @since V4.07.00
2333     * @throws Exception
2334     */
2335    boolean setChargerScreenDisabled(boolean disable) throws Exception;
2336
2337    /**
2338     * <div class="zh">设置启动应用密码。</div> <div class="en">Set the password for starting the application.</div>
2339     *
2340     * @param pkgName <div class="zh">应用包名。</div> <div class="en">Application package name.</div>
2341     * @param password <div class="zh">密码。</div>
2342     *               <div class="en">Password.</div>
2343     * @throws Exception
2344     * @since V4.07.00
2345     */
2346    void setApplicationNeedPassword(String pkgName,String password) throws Exception;
2347
2348    /**
2349     * <div class="zh">打开或关闭电池管理器</div>
2350     * <div class="en">Turn on or off the battery manager</div>
2351     *
2352     * @param enable <div class="zh"> true:打开 false:关闭 </div>
2353     *         <div class="en"> true: enable false: disable </div>
2354     *
2355     * @since V4.07.00
2356     */
2357    void setBatteryManagerEnable(boolean enable) throws  Exception;
2358
2359    /**
2360     * <div class="zh">设置USB tethering的子网。</div>
2361     * <div class="en">Set the subnet for USB tethering.</div>
2362     *
2363     * @param iface <div class="zh"> 0--RNDIS_INTERFACE;1--ECM_INTERFACE </div>
2364     *         <div class="en"> 0--RNDIS_INTERFACE;1--ECM_INTERFACE </div>
2365     * @param ip <div class="zh">ip信息</div> <div class="en">IP information</div>
2366     * @since V4.07.00
2367     * @throws Exception
2368     */
2369    void setTetheringIp(int iface, String ip) throws Exception;
2370
2371    /**
2372     * <div class="zh">获取USB tethering 子网的IP信息。</div>
2373     * <div class="en">Get IP information of USB tethering subnet.</div>
2374     *
2375     * @param iface <div class="zh">0--RNDIS_INTERFACE;1--ECM_INTERFACE  </div>
2376     *         <div class="en">0--RNDIS_INTERFACE;1--ECM_INTERFACE </div>
2377     * @return <div class="zh">ip信息</div> <div class="en">IP information</div>
2378     * @since V4.07.00
2379     * @throws Exception
2380     */
2381    String getTetheringIp(int iface) throws Exception;
2382
2383    /**
2384     * <div class="zh">设置是否显示电量百分比。</div>
2385     * <div class="en">Set whether to display battery percentage.</div>
2386     *
2387     * @param enable <div class="zh">true:显示 false:不显示 </div>
2388     *         <div class="en">true: display false: do not display.</div>
2389     *
2390     * @since V4.07.00
2391     */
2392    void enableBatteryLevelShow(boolean enable) throws  Exception;
2393
2394    /**
2395     * <div class="zh">设置副屏屏幕亮度。</div>
2396     * <div class="en">Set the screen brightness of the secondary screen.</div>
2397     *
2398     * @param brightness <div class="zh">设置的副屏亮度(范围0-100)  </div>
2399     *         <div class="en">Secondary screen brightness (range 0-100).</div>
2400     * @throws Exception
2401     * @since V4.07.00
2402     */
2403    void setSecScreenBrightness(int brightness) throws Exception;
2404
2405    /**
2406     * <div class="zh">获取副屏屏幕亮度。</div>
2407     * <div class="en">Get the screen brightness of the secondary screen.</div>
2408     *
2409     * @return <div class="zh">当前副屏屏幕亮度 </div>
2410     *         <div class="en">Current screen brightness of secondary screen.</div>
2411     * @throws Exception
2412     * @since V4.07.00
2413     */
2414    int getSecScreenBrightness() throws Exception;
2415
2416    /**
2417     * <div class="zh">打开或者关闭设置—电池—更多设置—应用待机优化中的应用优化开关</div>
2418     * <div class="en">Turn on or off Settings - Battery - More Settings - Application Optimization switch in Application Standby Optimization</div>
2419     *
2420     * @param packageName <div class="zh">应用的包名</div>
2421     *         <div class="en">The package name of the application</div>
2422     *
2423     * @param on <div class="zh">true表示打开对应应用的优化开关,false表示关闭对应应用的应用优化开关 </div>
2424     *         <div class="en">true: Enables the optimization switch of the corresponding application; false: disables the optimization switch of the corresponding application</div>
2425     *
2426     * @since V4.08.00
2427     */
2428    void setAppPowerSaveConfigWithType(String packageName, boolean on) throws  Exception;
2429
2430    /**
2431     * <div class="zh">隐藏关机菜单中的飞行模式</div>
2432     * <div class="en">Hide Airplane Mode in the shutdown menu</div>
2433     *
2434     * @param disable <div class="zh"> true 表示隐藏, false 表示不隐藏 </div>
2435     *         <div class="en">true: hides; false: does not hide</div>
2436     *
2437     * @since V4.08.00
2438     */
2439    void disableGlobalAirPlane(boolean disable) throws  Exception;
2440
2441    /**
2442     * <div class="zh">隐藏关机菜单中的响铃功能</div>
2443     * <div class="en">Hide the ringing function in the shutdown menu</div>
2444     *
2445     * @param disable <div class="zh"> true 表示隐藏, false 表示不隐藏 </div>
2446     *         <div class="en"> true: hides; false: does not hide </div>
2447     *
2448     * @since V4.08.00
2449     */
2450    void disableGlobalSilent(boolean disable) throws  Exception;
2451
2452    /**
2453     * <div class="zh">禁用或启用Power键长按关机功能</div>
2454     * <div class="en">To disable or enable the power-off function, hold down the Power key</div>
2455     *
2456     * @param disable <div class="zh"> true:禁用Power键长按关机功能 false:开启Power键长按关机功能 </div>
2457     *         <div class="en"> true: disables the Power key and hold down. false: disables the Power key and hold down </div>
2458     *
2459     * @since V4.08.00
2460     */
2461    void setLongPowerKeyDisable(boolean disable) throws  Exception;
2462
2463    /**
2464     * <div class="zh">设置充电时是否退出省电模式。</div>
2465     * <div class="en">Set whether to exit the power saving mode during charging.</div>
2466     *
2467     * @param config <div class="zh"> enable - true 退出;false 不退出 </div>
2468     *         <div class="en">enable-true Exits. false Do not exit</div>
2469     *
2470     * @return  <div class="zh">true 设置成功; false 设置失败  </div>
2471     *         <div class="en">true The setting succeeds. false Setting failed</div>
2472     * @since V4.09.00
2473     * @throws Exception
2474     */
2475    boolean setSmartSavingModeWhenCharging(boolean config) throws Exception;
2476
2477    /**
2478     * <div class="zh">设置是否在状态栏上显示运营商名称 注:重启后生效</div>
2479     * <div class="en">Whether to display the carrier name in the status bar Note: This parameter takes effect after the restart</div>
2480     *
2481     * @param enable <div class="zh">  true 显示;false 隐藏 </div>
2482     *         <div class="en"> true Displays; false hide </div>
2483     *
2484     * @since V4.09.00
2485     */
2486    void showCarrierName(boolean enable) throws Exception;
2487
2488    /**
2489     * <div class="zh">设置是否禁用USB外设。</div>
2490     * <div class="en">Set whether to disable USB peripherals.</div>
2491     *
2492     * @param disable <div class="zh"> true:禁用 立刻生效的 false:开启 重启才生效 </div>
2493     *         <div class="en">true: disables the function that takes effect immediately. false: The function takes effect after restart</div>
2494     * @since V4.09.00
2495     * @throws Exception
2496     */
2497    void setUsbHostDisable(boolean disable) throws Exception;
2498
2499    /**
2500     * <div class="zh">获取是否禁用USB外设的状态。</div>
2501     * <div class="en">Gets the status of whether to disable USB peripherals.</div>
2502     *
2503     * @return  <div class="zh">true:禁用 false:开启 </div>
2504     *         <div class="en">true: disabled false: enabled</div>
2505     * @since V4.09.00
2506     * @throws Exception
2507     */
2508    boolean isUsbHostDisabled() throws Exception;
2509
2510    /**
2511     * <div class="zh">设置自动开启 WLAN功能</div>
2512     * <div class="en">The WLAN function is enabled automatically</div>
2513     *
2514     * @param enable <div class="zh">true:开启,false:关闭  </div>
2515     *         <div class="en"> true: enable, false: disable </div>
2516     *
2517     * @since V4.09.00
2518     */
2519    void setWifiWakeupEnabled(boolean enable) throws Exception;
2520
2521    /**
2522     * <div class="zh">获取电池电量百分比开关状态。</div>
2523     * <div class="en">Obtain the battery percentage switch status.</div>
2524     *
2525     * @return <div class="zh">true 表示打开,false 表示关闭 </div>
2526     *         <div class="en">true: Enabled, false: disabled.</div>
2527     * @throws Exception
2528     * @since V4.09.00
2529     */
2530    boolean  getShowBatteryLevel() throws Exception;
2531
2532    /**
2533     * <div class="zh">获取屏幕旋转的角度</div>
2534     * <div class="en">Gets the Angle at which the screen rotates</div>
2535     *
2536     * @return  <div class="zh">角度值  </div>
2537     *         <div class="en">Angular value</div>
2538     *
2539     * @since V4.09.00
2540     */
2541    int getScreenRotation() throws Exception;
2542
2543    /**
2544     * <div class="zh">设置屏幕旋转角度</div>
2545     * <div class="en">Set the screen rotation Angle</div>
2546     *
2547     * @param rotation  <div class="zh">屏幕旋转角度,rotation是90的倍数,如:0、90等. </div>
2548     *         <div class="en"> The screen rotation Angle is a multiple of 90, such as 0, 90. </div>
2549     * @return  <div class="zh"> true:成功,false:失败</div>
2550     *         <div class="en">true: succeeds, false: fails</div>
2551     * @since V4.09.00
2552     */
2553    boolean setScreenRotation(int rotation) throws Exception;
2554
2555    /**
2556     * <div class="zh">下载客户私钥签名的开机动画,注意:开机动画大小不超过30M</div>
2557     * <div class="en">Download the power-on animation signed by the customer's private key. Note: The size of the power-on animation should not exceed 30M</div>
2558     *
2559     * @param fileName  <div class="zh"> 开机动画资源文件的路径  </div>
2560     *         <div class="en"> The path to the power-on animation resource file. </div>
2561     * @since V4.10.00
2562     */
2563    void updateBootAnimation(String fileName) throws Exception;
2564
2565    /**
2566     * <div class="zh">下载客户私钥签名的开机LOGO,注意:开机LOGO大小不超过30M</div>
2567     * <div class="en">Download the startup LOGO signed by the customer's private key,Note: Boot LOGO size does not exceed 30M</div>
2568     *
2569     * @param fileName  <div class="zh"> 开机LOGO资源文件的路径  </div>
2570     *         <div class="en"> Startup LOGO Specifies the path to the resource file. </div>
2571     * @since V4.10.00
2572     */
2573    void updateBootLogo(String fileName) throws Exception;
2574
2575    /**
2576     * <div class="zh">更新Setting应用的密码</div>
2577     * <div class="en">Update the password of Setting</div>
2578     *
2579     * @param pubKey  <div class="zh"> 公钥  </div>
2580     *         <div class="en"> Public key. </div>
2581     * @param sha256  <div class="zh"> 密码对应的Hash值,仅支持sha256  </div>
2582     *         <div class="en"> The Hash value corresponding to the password can only be sha256. </div>
2583     * @param caller  <div class="zh"> 回调传入私钥加密后的数据  </div>
2584     *         <div class="en"> Callback The encrypted data passed into the private key. </div>
2585     *
2586     * @since V4.10.00
2587     */
2588    void updateSettingsPasswordHashValue(byte[] pubKey, String sha256,ASCaller caller) throws Exception;
2589
2590    /**
2591     * <div class="zh">蓝牙配对界面是否需要显示访问通信录和通话记录提示框</div>
2592     * <div class="en">Whether to display the access address book and call history prompt box on the Bluetooth pairing interface</div>
2593     *
2594     * @param flag   <div class="zh"> false: 隐藏checkBox访问通讯录和通话记录提示,并且默认不勾选
2595     *                                 true:保持原生设计,显示checkBox访问通讯录和通话记录提示</div>
2596     *         <div class="en"> false: hides the prompt for the checkBox to access contacts and call records, and is deselected by default
2597     *               true: Keep the original design and display the checkBox prompt for accessing contacts and call history </div>
2598     *
2599     * @since V4.10.00
2600     */
2601    void allowAccessContactsBtPairing(boolean flag) throws Exception;
2602
2603    /**
2604     * <div class="zh">飞行模式下是否保持蓝牙打开状态</div>
2605     * <div class="en">Whether to keep Bluetooth on in airplane mode</div>
2606     *
2607     * @param enable <div class="zh">true:飞行模式下保持蓝牙打开状态,false:飞行模式下保持蓝牙关闭状态  </div>
2608     *         <div class="en"> true: enable, false: disable </div>
2609     *
2610     * @since V4.10.00
2611     */
2612    void allowBtOpenAirplane(boolean enable) throws Exception;
2613
2614    /**
2615     * <div class="zh">禁用系统动画</div>
2616     * <div class="en">Disable system animation</div>
2617     *
2618     * @param disable   <div class="zh"> true:关闭;false:打开 </div>
2619     *         <div class="en"> true: disable. false: enable </div>
2620     *
2621     * @since V4.11.00
2622     */
2623    void disableAnimations(boolean disable) throws Exception;
2624
2625    /**
2626     * <div class="zh">获取设备是否触发</div>
2627     * <div class="en">Obtain whether the device is triggered</div>
2628     *
2629     * @return  <div class="zh"> 0:未触发 非0:触发</div>
2630     *         <div class="en"> 0: not triggered Non-0: triggered </div>
2631     *
2632     * @since V4.11.00
2633     */
2634    int getDeviceTamperInfo() throws Exception;
2635
2636    /**
2637     * <div class="zh">用于设置默认DNS,调用接口后需要断开网络,再重新连接网络才能生效,例如:调用接口后需要先关闭移动数据开关,
2638     *                  然后再打开移动数据流量开关。WIFI也是如此,需要断开当前WiFi连接然后重连才能生效。</div>
2639     * <div class="en">This parameter is used to set the default DNS. After invoking an interface, disconnect from the network and reconnect to the network. For example, after invoking an interface, disable the mobile data switch.
2640     *                  Then turn on the mobile data traffic switch. The same is true for WIFI, which requires disconnecting the current WiFi connection and then reconnecting to work.</div>
2641     *
2642     * @param dns1 <div class="zh"> DNS的IP地址  </div>
2643     *         <div class="en"> IP address of DNS </div>
2644     * @param dns2 <div class="zh"> DNS的IP地址  </div>
2645     *         <div class="en"> IP address of DNS </div>
2646     *
2647     * @since V4.11.00
2648     */
2649    void setDefaultDns(String dns1,String dns2) throws Exception;
2650
2651    /**
2652     * <div class="zh">恢复出厂设置 需在AndroidManifest下添加以下权限:"com.pax.permission.RESET"</div>
2653     * <div class="en">To restore factory Settings, you need to add the following permissions in the AndroidManifest :"com.pax.permission.RESET"</div>
2654     *
2655     * @since V4.12.00
2656     * @throws Exception
2657     */
2658    void reset() throws Exception;
2659
2660    /**
2661     * <div class="zh">设置省电模式 注:仅适用于展讯平台的产品</div>
2662     * <div class="en">Set power saving mode Note: Only applicable to Spreadtrum platform products</div>
2663     *
2664     * @param mode <div class="zh"> 1-智能省电模式;3-省电模式;4-超级省电模式 </div>
2665     *         <div class="en"> 1 - Intelligent power saving mode; 3- Power saving mode; 4- Super Power saving mode </div>
2666     *
2667     * @since V4.14.00
2668     */
2669    void setPowerSaveMode(int mode) throws Exception;
2670
2671    /**
2672     * <div class="zh">设置TP唤醒是否打开。注:功能需要重启生效。</div>
2673     * <div class="en">Set whether TP wake-up is enabled. Note: The function needs to be restarted to take effect.</div>
2674     *
2675     * @param enable  <div class="zh"> true - 打开,false 关闭   </div>
2676     *         <div class="en"> true - On, false off </div>
2677     *
2678     * @since V4.14.00
2679     */
2680    void setTpWakeupEnable(boolean enable) throws Exception;
2681
2682    /**
2683     * <div class="zh">获取TP唤醒功能开关状态。</div>
2684     * <div class="en">Get the status of TP Wake up switch.</div>
2685     *
2686     * @return <div class="zh"> true-打开,false-关闭 </div>
2687     *         <div class="en"> true- On, false- off </div>
2688     *
2689     * @since V4.14.00
2690     */
2691    boolean getTpWakeupEnable() throws Exception;
2692
2693    /**
2694     * <div class="zh">设置ethernet的限制速度</div> <div class="en">set the limit speed of ethernet</div>
2695     *
2696     * @param speed <div class="zh">10,100,1000,0(不限速),单位为Mbps</div>
2697     *              <div class="en">10,100,1000,0(not limited), expressed in Mbit/s</div>
2698     *
2699     * @return  <div class="zh">true:设置成功,false:设置失败</div>
2700     *          <div class="en">true: succeeds, false: fails</div>
2701     *
2702     * @throws Exception
2703     * @since V4.14.00
2704     */
2705    boolean setEthernetSpeedLimit(int speed) throws Exception;
2706
2707    /**
2708     * <div class="zh">获取ethernet当前的限制速度</div>
2709     * <div class="en">get the current limiting speed of ethernet</div>
2710     *
2711     * @return  <div class="zh">10,100,1000,0(不限速)和-1(读取失败),单位为Mbps </div>
2712     *          <div class="en">10,100,1000,0 (not limited), and -1 (read failure), expressed in Mbit/s</div>
2713     *
2714     * @throws Exception
2715     * @since V4.14.00
2716     */
2717    int getEthernetSpeedLimit() throws Exception;
2718
2719    /**
2720     * <div class="zh">在设置->电池工作模式的自适应模式下,终端自动切换为桌面模式后,充电到80%时会停止充电并发送停充通知,控制停充通知是否静音。</div>
2721     * <div class="en">In the adaptive mode of setting -> Battery working mode, after the terminal automatically switches to desktop mode, it will stop charging and send a stop charging notification when charging reaches 80%. Control whether the stop charging notification is muted.</div>
2722     *
2723     * @param flag  <div class="zh"> true-表示停充通知静音,false-表示停充通知有声音   </div>
2724     *         <div class="en"> true: The charge stop notification is silent. false: the charge stop notification is audible </div>
2725     *
2726     * @since V4.14.00
2727     */
2728    void setAutoAdaptionModeNotificationSilent(boolean flag) throws Exception;
2729
2730    /**
2731     * <div class="zh">设置是否打开无障碍-界面高对比度文字。</div>
2732     * <div class="en">Set whether Accessibility is turned on - Interface high contrast text.</div>
2733     *
2734     * @param enable  <div class="zh"> true - 打开,false 关闭 </div>
2735     *         <div class="en"> true - On, false off </div>
2736     *
2737     * @since V4.15.00
2738     */
2739    void setHighTextContrastEnabled(boolean enable) throws Exception;
2740
2741    /**
2742     * <div class="zh">设置是否打开无障碍-色彩校正。</div>
2743     * <div class="en">Set whether to turn on Accessibility - Color correction.</div>
2744     *
2745     * @param enable  <div class="zh"> true - 打开,false 关闭 </div>
2746     *         <div class="en"> true - On, false off </div>
2747     *
2748     * @since V4.15.00
2749     */
2750    void setAccessibilityDisplayDaltonizerEnabled(boolean enable) throws Exception;
2751
2752    /**
2753     * <div class="zh">设置是否打开无障碍-颜色反转。</div>
2754     * <div class="en">Set whether to turn on Accessibility - Color inversion.</div>
2755     *
2756     * @param enable  <div class="zh"> true - 打开,false 关闭 </div>
2757     *         <div class="en"> true - On, false off </div>
2758     *
2759     * @since V4.15.00
2760     */
2761    void setAccessibilityDisplayInversionEnabled(boolean enable) throws Exception;
2762
2763    /**
2764     * <div class="zh">用于设置Settings—Network & internet—PrivateDns菜单中的私人DNS主机名</div>
2765     * <div class="en">Used to set the private DNS hostname in the Settings - Network & internet - PrivateDns menu</div>
2766     *
2767     * @param dns <div class="zh">私人DNS提供商主机名</div>
2768     *              <div class="en">Private DNS provider hostname</div>
2769     *
2770     * @throws Exception
2771     * @since V4.15.00
2772     */
2773    void setPrivateDns(String dns) throws Exception;
2774
2775    /**
2776     * <div class="zh">设置AGPS服务器的域名。</div>
2777     * <div class="en">Set the domain name of the AGPS server.</div>
2778     *
2779     * @param domainName  <div class="zh"> AGPS服务器域名 </div>
2780     *         <div class="en"> AGPS server domain name </div>
2781     *
2782     * @since V4.15.00
2783     */
2784    void setAgpsServerDomain(String domainName) throws Exception;
2785
2786    /**
2787     * <div class="zh">获取AGPS服务器的域名。</div>
2788     * <div class="en">Get the domain name of the AGPS server.</div>
2789     *
2790     * @return <div class="zh"> AGPS服务器域名 </div>
2791     *         <div class="en"> AGPS server domain name </div>
2792     *
2793     * @since V4.15.00
2794     */
2795    String getAgpsServerDomain() throws Exception;
2796
2797    /**
2798     * <div class="zh">下载TTS离线语音文件</div>
2799     * <div class="en">Download the TTS offline voice file</div>
2800     *
2801     * @param zipFilePath <div class="zh">语音文件压缩包,需PUK签名或固件签名,每次下载都会清除之前的语音包;语音包压缩文件可包含多个国家的语言,文件总大小最大支持50M。</div>
2802     *              <div class="en">The compressed package of the voice file requires PUK signature or firmware signature. Each time it is downloaded, the previous voice package will be cleared. The compressed file of the voice package can contain the languages of multiple countries, and the maximum total file size supported is 50M. </div>
2803     *
2804     * @return <div class="zh">
2805     * <ul>
2806     * <li>0 success</li>
2807     * <li>-1:unknown</li>
2808     * <li>-2:不支持</li>
2809     * <li>-3:文件不存在或不可读</li>
2810     * <li>-4:压缩包超过50M</li>
2811     * <li>-5:入参是软链接</li>
2812     * <li>-6:验签失败</li>
2813     * <li>-7:非zip文件或解压失败</li>
2814     * </ul>
2815     * </div> <div class="en">
2816     * <ul>
2817     * <li>0 success</li>
2818     * <li>-1:unknown</li>
2819     * <li>-2:Not supported</li>
2820     * <li>-3:The file does not exist or is unreadable</li>
2821     * <li>-4:The compressed package exceeds 50M</li>
2822     * <li>-5:Input parameters are soft links</li>
2823     * <li>-6:The signature verification failed.</li>
2824     * <li>-7:Non-zip file or decompression failed</li>
2825     * </ul>
2826     * </div>
2827     *
2828     * @throws Exception
2829     * @since V4.16.00
2830     */
2831    int updateTTSVoices(String zipFilePath) throws Exception;
2832
2833    /**
2834     * <div class="zh">设置是否开启触摸提示音</div>
2835     * <div class="en">set whether to enable the touch sound</div>
2836     *
2837     * @param enabled <div class="zh">true:开启; false:关闭</div>
2838     *                <div class="en">true: enable; false: disable</div>
2839     *
2840     * @throws Exception
2841     * @since V4.17.00
2842     */
2843    void setSoundEffectsEnabled(boolean enabled) throws Exception;
2844
2845    /**
2846     * <div class="zh">获取触摸提示音是否开启</div>
2847     * <div class="en">get whether the touch sound is enabled</div>
2848     *
2849     * @return  <div class="zh">true:开启; false:关闭</div>
2850     *          <div class="en">true: enable; false: disable</div>
2851     *
2852     * @throws Exception
2853     * @since V4.17.00
2854     */
2855    boolean isSoundEffectsEnabled() throws Exception;
2856
2857    /**
2858     * <div class="zh">设置是否由应用播放盲人键盘语音提示。</div>
2859     * <div class="en">Set whether the application plays voice prompts for the blind keyboard.</div>
2860     *
2861     * @param enabled  <div class="zh"> true-应用播放盲人语音提示; false-系统播放盲人语音提示  </div>
2862     *         <div class="en"> true - The application plays voice prompts for the blind; false - The system plays voice prompts for the blind. </div>
2863     *
2864     * @since V4.17.00
2865     */
2866    void setDoubleTapKeyboardPlaySoundCustomized(boolean enabled) throws Exception;
2867
2868    /**
2869     * <div class="zh">设置是否显示安全音量警告提醒弹框。</div>
2870     * <div class="en">Set whether to display the safety volume warning reminder pop-up box.</div>
2871     *
2872     * @param disable  <div class="zh"> true - 不弹框,false 弹框 </div>
2873     *         <div class="en"> true - no pop-up box, false - pop-up box </div>
2874     *
2875     * @since V4.17.00
2876     */
2877    void disableVolumeSafetyWarningDialog(boolean disable) throws Exception;
2878
2879    /**
2880     * <div class="zh">切换私人DNS模式</div>
2881     * <div class="en">Switch to the private DNS mode</div>
2882     *
2883     * @param mode <div class="zh">0-OFF; 1-automatic; 2-PROVIDER_HOSTNAME </div>
2884     *              <div class="en">0-OFF; 1-automatic; 2-PROVIDER_HOSTNAME </div>
2885     *
2886     * @throws Exception
2887     * @since V4.17.00
2888     */
2889    void switchPrivateDNSMode(int mode) throws Exception;
2890
2891    /**
2892     * <div class="zh">设置客显屏显示PIN键盘</div>
2893     * <div class="en">Set the guest display screen to show the PIN keyboard</div>
2894     *
2895     * @param type <div class="zh"> 1 - 默认客显屏PIN键盘  2 - 应用自行实现客显屏密码键盘 </div>
2896     *              <div class="en">1 - Default PIN keyboard on the customer display screen 2 - The application implements the customer display screen PIN keyboard by itself</div>
2897     *
2898     * @throws Exception
2899     * @since V4.18.00
2900     */
2901    void setGuestKeyBoardType(int type) throws Exception;
2902
2903    /**
2904     * <div class="zh">应用配置文件和脚本文件的验签。</div> <div class="en">Verification of application configuration files and script files.</div>
2905     *
2906     * @param filePath  <div class="zh">
2907     *                      <ul>
2908     *                          <li>文件的绝对路径。</li>
2909     *                      </ul>
2910     *                 </div>
2911     *                 <div class="en">
2912     *                      <ul>
2913     *                          <li>The absolute path of the file.</li>
2914     *                      </ul>
2915     *                 </div>
2916     *
2917     * @param fileType <div class="zh">文件类型,应用配置文件和脚本文件固定为0x59 。</div>
2918     *                 <div class="en">The file type, application configuration file and script file are fixed as 0x59.</div>
2919     *
2920     * @param pukType <div class="zh">1:使用终端当前的US PUK对文件进行验证
2921     *                                2: 使用参数puk对文件进行验证 。</div>
2922     *                 <div class="en">1: Verify the file using the current US PUK of the terminal.
2923     *                                 2: Verify the file using the parameter puk.</div>
2924     *
2925     * @param puk <div class="zh">pukType为2时,使用此puk验证文件; pukType为其他值时忽略此参数 。</div>
2926     *                 <div class="en">When pukType is 2, use this puk to verify the file; when pukType has other values, ignore this parameter.</div>
2927     *
2928     * @return <div class="zh">
2929     *              <ul>
2930     *                  <li>>0: 去掉签名数据后的原始文件长度 ;<=0: 验签失败。</li>
2931     *              </ul>
2932     *          </div>
2933     *          <div class="en">
2934     *              <ul>
2935     *                  <li>> 0: Length of the original file after removing signature data; <= 0: Signature verification failed.</li>
2936     *              </ul>
2937     *          </div>
2938     * @throws Exception
2939     * @since V4.18.00
2940     */
2941    int verifySign(String filePath, int fileType, int pukType, byte[] puk) throws Exception;
2942
2943    /**
2944     * <div class="zh">设置是否禁用摄像头功能</div>
2945     * <div class="en">Set whether to disable the camera function.</div>
2946     *
2947     * @param disable <div class="zh">true:禁用 false:开启</div>
2948     *                <div class="en">true: Disable false: Enable</div>
2949     *
2950     * @throws Exception
2951     * @since V4.18.00
2952     */
2953    void disableCamera(boolean disable) throws Exception;
2954
2955    /**
2956     * <div class="zh">设置天线模式</div>
2957     * <div class="en">set antenna mode</div>
2958     *
2959     * @param antMode <div class="zh">天线模式:0 内置天线模式; 1 外置天线模式; 2 混合天线模式</div>
2960     *                <div class="en">antMode:0 internal antenna mode; 1 external antenna mode; 2 mixed antenna mode</div>
2961     *
2962     * @throws Exception
2963     * @since V4.18.00
2964     */
2965    void setAntMode(int antMode) throws Exception;
2966
2967    /**
2968     * <div class="zh">获取天线模式</div>
2969     * <div class="en">get antenna mode</div>
2970     *
2971     * @return  <div class="zh">天线模式:0 内置天线模式;1 外置天线模式; 2 混合天线模式</div>
2972     *          <div class="en">antMode:0 internal antenna mode; 1 external antenna mode; 2 mixed antenna mode</div>
2973     *
2974     * @throws Exception
2975     * @since V4.18.00
2976     */
2977    int getAntMode() throws Exception;
2978
2979    /**
2980     * <div class="zh">税控模块上电接口。</div>
2981     * <div class="en">Power-on interface of the tax control module.</div>
2982     *
2983     * @param mode  <div class="zh"> 0-USB税控模块;1-串口税控模块  </div>
2984     *         <div class="en"> 0 - USB tax control module; 1 - Serial port tax control module. </div>
2985     *
2986     * @param on  <div class="zh"> true-上电; false-下电 </div>
2987     *         <div class="en"> true - power on; false - power off. </div>
2988     *
2989     * @since V4.18.00
2990     */
2991    void controlTaxPower(int mode,boolean on) throws Exception;
2992
2993    /**
2994     * <div class="zh">设置快捷启动方式。</div>
2995     * <div class="en">Set up a quick launch method.</div>
2996     *
2997     * @param name  <div class="zh"> 快捷功能,当前支持如下:"quick_camera_disabled" 熄屏双击音量加启动相机应用  </div>
2998     *         <div class="en"> Quick functions currently supported: "quick_camera_disabled" Double-click the volume up button on the locked screen to launch the camera app. </div>
2999     *
3000     * @param value  <div class="zh"> "quick_camera_disabled" 对应选项: "1"-禁止唤醒;"0"-恢复唤醒 </div>
3001     *         <div class="en"> "quick_camera_disabled": "1" - Prohibit wake-up; "0" - Restore wake-up. </div>
3002     *
3003     * @since V4.18.00
3004     */
3005    void setQuickLaunch(String name,String value) throws Exception;
3006
3007    /**
3008     * <div class="zh">获取设备相关版本信息</div>
3009     * <div class="en">Obtain device-related version information</div>
3010     *
3011     * @param componentName  <div class="zh"> "modem": 获取modem版本信息 </div>
3012     *         <div class="en"> "modem": Obtain modem version information </div>
3013     *
3014     * @return  <div class="zh">相关版本信息</div>
3015     *          <div class="en">Relevant version information</div>
3016     *
3017     * @throws Exception Exception
3018     * @since V4.18.00
3019     */
3020    String getSystemComponentVersion(String componentName) throws Exception;
3021
3022    /**
3023     * <div class="zh">设置当前物理键盘布局</div>
3024     * <div class="en">set the current physical keyboard layout</div>
3025     *
3026     * @param keyboardLayoutDescriptor
3027     * <div class="zh">键盘描述字符</div>
3028     * <div class="en">physical keyboard description character</div>
3029     *
3030     * @throws Exception Exception
3031     */
3032    void setCurrentKeyboardLayoutForInputDevice(String keyboardLayoutDescriptor) throws Exception;
3033
3034    /**
3035     * <div class="zh">获取当前物理键盘布局</div>
3036     * <div class="en">get the current physical keyboard layout</div>
3037     *
3038     * @throws Exception Exception
3039     */
3040    String getCurrentKeyboardLayoutForInputDevice() throws Exception;
3041
3042    /**
3043     * <div class="zh">下载TTS离线语音文件</div>
3044     * <div class="en">Download the TTS offline voice file</div>
3045     *
3046     * @param mode <div class="zh">0: 增量下载语音包  1: 删除语音包。</div>
3047     *              <div class="en">0: Incrementally download voice packs 1: Delete voice packs. </div>
3048     *
3049     * @param path <div class="zh">模式0时,语音包的路径,需PUK签名或固件签名,文件总大小不超过50M;模式1时,请使用/data/resource/tts下的目录名,删除对应语音包。</div>
3050     *              <div class="en">When in Mode 0, the path of the voice package requires PUK signature or firmware signature, and the total file size should not exceed 50M. When in Mode 1, please use the directory name under /data/resource/tts and delete the corresponding voice package. </div>
3051     *
3052     * @return <div class="zh">
3053     * <ul>
3054     * <li>0 success</li>
3055     * <li>-1:unknown</li>
3056     * <li>-2:不支持</li>
3057     * <li>-3:文件不存在或不可读</li>
3058     * <li>-4:压缩包超过50M</li>
3059     * <li>-5:入参是软链接</li>
3060     * <li>-6:验签失败</li>
3061     * <li>-7:非zip文件或解压失败</li>
3062     * <li>-8 需删除的语音文件不存在</li>
3063     * <li>-9 参数非法</li>
3064     * </ul>
3065     * </div> <div class="en">
3066     * <ul>
3067     * <li>0 success</li>
3068     * <li>-1:unknown</li>
3069     * <li>-2:Not supported</li>
3070     * <li>-3:The file does not exist or is unreadable</li>
3071     * <li>-4:The compressed package exceeds 50M</li>
3072     * <li>-5:Input parameters are soft links</li>
3073     * <li>-6:The signature verification failed.</li>
3074     * <li>-7:Non-zip file or decompression failed</li>
3075     * <li>-8 The voice file to be deleted does not exist</li>
3076     * <li>-9 Illegal parameter</li>
3077     * </ul>
3078     * </div>
3079     *
3080     * @throws Exception Exception
3081     * @since V4.18.00
3082     */
3083    int updateTTSVoices(int mode, String path) throws Exception;
3084}