# 版本6.3
## 导入JAR并初始化单件对象
* 1.导入ZtlManager包
```java
import ZtlApi.ZtlManager;
```
* 2.声明并实例化 ZtlManager 对象,注意,在实例化对象时需要传入参数 Context。
```java
ZtlManager.GetInstance().setContext(MainActivity.this);
或
ZtlManager.GetInstance().setContext(getApplicationContext());
```
* 3.开始调用其他API 比如
```java
ZtlManager.GetInstance().getDeviceVersion();//获取设备版本
```
* 1 [系统](#系统)
* [获取jar版本](#获取jar版本)
* [获取设备型号](#获取设备型号)
* [获取系统版本](#获取系统版本)
* [获取系统SDK版本](#获取系统SDK版本)
* [获取设备唯一ID](#获取设备唯一ID)
* [获取内部存储大小](#获取内部存储大小)
* [获取剩余存储大小](#获取剩余存储大小)
* [获取剩余运行内存](#获取剩余运行内存)
* [获取内部SD卡路径](#获取内部SD卡路径)
* [获取外部SD卡路径](#获取外部SD卡路径)
* [获取插入U盘个数](#获取插入U盘个数)
* [获取指定索引U盘路径](#获取指定索引U盘路径)
* [获取U盘路径](#获取U盘路径)
* [休眠](#休眠)
* [唤醒](#唤醒)
* [关机](#关机)
* [重启](#重启)
* [截取当前屏幕](#截取当前屏幕)
* [设置系统桌面](#设置系统桌面)
* [设置普通APP为系统桌面](#设置普通APP为系统桌面)
* [获取设置的系统桌面包名](#获取设置的系统桌面包名)
* [判断包名对应的APP是否存在](#判断包名对应的APP是否存在)
* [恢复出厂设置](#恢复出厂设置)
* [打开设置界面](#打开设置界面)
* [打开WiFi界面](#打开WiFi界面)
* [打开或关闭导航栏与状态栏](#打开或关闭导航栏与状态栏)
* [获取当前导航栏状态](#获取当前导航栏状态)
* [设置USB调试状态](#设置USB调试状态)
* [获取USB调试状态](#获取USB调试状态)
* [OTG功能开关](#OTG功能开关)
* [获取OTG口连接状态](#获取OTG口连接状态)
* [设置生成序列号](#设置生成序列号)
* [获取生成的序列号](#获取生成的序列号)
* [判断4G网络故障代码](#判断4G网络故障代码)
* [判断系统是否支持看门狗功能](#判断系统是否支持看门狗功能)
* [打开看门狗并喂狗](#打开看门狗并喂狗)
* [关闭看门狗](#关闭看门狗)
* [判断看门狗是否正在运行](#判断看门狗是否正在运行)
* [读取看门狗的值](#读取看门狗的值)
* [设置锁屏](#设置锁屏)
* [锁屏](#锁屏)
* [执行cmd命令并获取返回值](#执行cmd命令并获取返回值)
* [执行命令行](#执行命令行)
* [设置开机自启动](#设置开机自启动)
* [获取设置的开机自启动APP的包名](#获取设置的开机自启动APP的包名)
* [获取设置的开机自启动APP的类名](#获取设置的开机自启动APP的类名)
* [启动另一个APP](#启动另一个APP)
* [静默安装APK](#静默安装APK)
* [无需root权限静默安装APK](#无需root权限静默安装APK)
* [卸载APP](#卸载APP)
* [静默安装APK并且重启系统](#静默安装APK并且重启系统)
* [安装APP并启动安装的APP](#安装APP并启动安装的APP)
* [守护进程](#守护进程)
* [取消守护进程](#取消守护进程)
* [保活某个服务](#保活某个服务)
* [取消保活某个服务](#取消保活某个服务)
* [硬件看门狗](#APP使用硬件看门狗)
* 2 [时间](#时间)
* [获取系统日期](#获取系统日期)
* [获取系统时间](#获取系统时间)
* [立刻同步网络时间](#立刻同步网络时间)
* [设置同步时间的间隔](#设置同步时间的间隔)
* [设置系统日期与时间](#设置系统日期与时间)
* [判断系统的时区是否为自动获取](#判断系统的时区是否为自动获取)
* [设置系统时区开关](#设置系统时区开关)
* [判断系统的时间是否自动获取](#判断系统的时间是否自动获取)
* [设置系统的自动确定日期与时间开关](#设置系统的自动确定日期与时间开关)
* [定时关机](#定时关机)
* [定时开机](#定时开机)
* [设置系统指定某天定时关机](#设置系统指定某天定时关机)
* [设置系统指定某天定时开机](#设置系统指定某天定时开机)
* [自定义周期定时关机](#自定义周期定时关机)
* [自定义周期定时开机](#自定义周期定时开机)
* [定时重启](#定时重启)
* [设置系统指定某天定时重启](#设置系统指定某天定时重启)
* 3 [显示](#显示)
* [获取屏幕分辨率](#获取屏幕分辨率)
* [获取屏幕分辨率Y轴像素](#获取屏幕分辨率Y轴像素)
* [获取屏幕分辨率X轴像素](#获取屏幕分辨率X轴像素)
* [获取屏幕显示密度](#获取屏幕显示密度)
* [设置屏幕显示密度](#设置屏幕显示密度)
* [是否设置背光反向](#是否设置背光反向)
* [获取背光是否已反向](#获取背光是否已反向)
* [获取当前亮度](#获取当前亮度)
* [获取最大亮度值](#获取最大亮度值)
* [增大亮度值](#增大亮度值)
* [降低亮度值](#降低亮度值)
* [设置系统亮度](#设置系统亮度)
* [设置屏幕方向](#设置屏幕方向)
* [设置副屏方向](#设置副屏方向)
* [设置多屏幕方向](#设置多屏幕方向)
* [获取屏幕方向](#获取屏幕方向)
* [设置触摸方向](#设置触摸方向)
* [获取触摸方向](#获取触摸方向)
* [获取支持的分辨率列表](#获取支持的分辨率列表)
* [设置分辨率](#设置分辨率)
* [设置桌面壁纸](#设置桌面壁纸)
* [设置字体大小](#设置字体大小)
* [获取固件所支持的屏幕个数](#获取固件所支持的屏幕个数)
* 4 [网络](#网络)
* [获取MAC地址](#获取MAC地址)
* [获取IPv4地址](#获取IPv4地址)
* [获取当前连接的网络类型](#获取当前连接的网络类型)
* [指定wifi掉线重连](#指定wifi掉线重连)
* [指定wifi停止掉线重连](#指定wifi停止掉线重连)
* [禁用或启用网络ADB](#禁用或启用网络ADB)
* [打开热点](#打开热点)
* [关闭热点](#关闭热点)
* [获取指定网络的IPv4地址](#获取指定网络的IPv4地址)
* [设置以太网配置信息](#设置以太网配置信息)
* [设置以太网配置信息多网卡设置](#设置以太网配置信息多网卡设置)
* [设置WIFI配置信息](#设置WIFI配置信息)
* [设置WIFI热点](#设置WIFI热点)
* [启用或禁用4G模块断线自动重连](#启用或禁用4G模块断线自动重连)
* [获取4G模块IMEI信息](#获取4G模块IMEI信息)
* [获取SIM卡TEL信息](#获取SIM卡TEL信息)
* [获取SIM卡ICCID信息](#获取SIM卡ICCID信息)
* [获取SIM卡IMSI信息](#获取SIM卡IMSI信息)
* [获取SIM卡运营商信息](#获取SIM卡运营商信息)
* [获取4G模块基带版本信息](#获取4G模块基带版本信息)
* [设置APN](#设置APN)
* [查询APN](#查询APN是否存在)
* 5 [文件](#文件)
* [获取文件后缀名](#获取文件后缀名)
* [判断文件是否存在](#判断文件是否存在)
* [计算GPIO值](#计算GPIO值)
* [设置GPIO输出值](#设置GPIO输出值)
* [获取GPIO值](#获取GPIO值)
* [设置GPIO方向](#设置GPIO方向)
* [获取GPIO方向](#获取GPIO方向)
* [打开器件存储器](#打开器件存储器)
* [铁电存储器专用写接口](#铁电存储器专用写接口)
* [铁电存储器专用读接口](#铁电存储器专用读接口)
* [加密芯片专用写接口](#加密芯片专用写接口)
* [加密芯片专用读接口](#加密芯片专用读接口)
* [关闭器件存储器](#关闭器件存储器)
* [禁止卸载app](#禁止卸载app)
* [获取禁止卸载APP的包名](#获取禁止卸载APP的包名)
* [获取ADC数值](#获取ADC数值)
* 6 [媒体](#媒体)
* [获取系统最大音量](#获取系统最大音量)
* [获取系统当前音量](#获取系统当前音量)
* [增大音量](#增大音量)
* [降低音量](#降低音量)
* [设置媒体音量值](#设置媒体音量值)
* [设置指定音量的音量值](#设置指定音量的音量值)
* [获取指定音量的音量值](#获取指定音量的音量值)
* [获取指定音量的最大音量值](#获取指定音量的最大音量值)
* [设置相机方向](#设置相机方向)
* [获取相机方向](#获取相机方向)
* [判断相机是否镜像](#判断相机是否镜像)
* [设置相机是否镜像](#设置相机是否镜像)
* 7 [其他](#其他)
* [打开性能监控小程序](#打开性能监控小程序)
* [获取CPU可用频率](#获取CPU可用频率)
* [设置CPU频率](#设置CPU频率)
# 系统
## 获取jar版本
函数:public String getJARVersion()<br>
描述:获取 jar 版本号<br>
用途:当用户拿到的 jar 版本和厂家公布的 jar 不一致时,建议更新。<br>
示例:
```java
String JARVersion = ZtlManager.GetInstance().getJARVersion();//JARVersion为获取到的jar版本号
```
## 获取设备型号
函数:public static String getDeviceVersion()<br>
描述:获取 Android 设备型号。<br>
用途:可以通过读取这个 api 适配不同的板子,写不同的功能代码。<br>
示例:
```java
String DeviceVersion = ZtlManager.GetInstance().getDeviceVersion();//DeviceVersion 为获取到的设备型号
```
## 获取系统版本
函数:public static String getAndroidVersion()<br>
描述:获取 Android 设备系统版本号<br>
用途:可以通过读取这个 api 适配不同的操作系统版本,写不同的功能代码。<br>
示例:
```java
String AndroidVersion = ZtlManager.GetInstance().getAndroidVersion();//AndroidVersion 为获取到的设备型号
```
## 获取系统SDK版本
函数:public int getSDKVersion()<br>
描述:获取 Android 设备系统版本号<br>
用途:可以通过读取这个 api 适配不同的操作系统,写不同的功能代码。<br>
示例:
```java
String getSDKVersion = ZtlManager.GetInstance().getSDKVersion();//getSDKVersion 为获取到的SDK版本号
```
## 获取设备唯一ID
函数:public String getDeviceID()<br>
描述:获取 Android 设备唯一序列号<br>
示例:
```java
String DeviceID = ZtlManager.GetInstance().getDeviceID();//DeviceID 为获取到的设备唯一ID
```
## 获取内部存储大小
函数:public long getTotalInternalMemorySize()<br>
描述:获取内部存储空间总大小,相当于电脑的硬盘空间大小<br>
用途:可以写一些监听内存的代码,转换 GB 需要将返回的结果/1024/1024/1024<br>
示例:
```java
long MemorySize = ZtlManager.GetInstance().getTotalInternalMemorySize();//MemorySize 为获取到设备内部存储大小(字节)
```
## 获取剩余存储大小
函数:public long getFreeMemory()<br>
描述:获取内部剩余存储空间大小<br>
用途:可以写一些监听内存的代码,转换 GB 需要将返回的结果/1024/1024/1024<br>
示例:
```java
long freeMemory = ZtlManager.GetInstance().getFreeMemory();//freeMemory 为获取到设备剩余存储大小(字节)
```
## 获取剩余运行内存
函数:public long getFreeMemorySize()<br>
描述:获取剩余的运行内存<br>
用途:可用于监听 app 内存使用情况,用来查看是否有内存泄漏。接口返回的是字节,转换 GB 需要/1024/1024/1024<br>
示例:
```java
long FreeMemorySize = ZtlManager.GetInstance().getFreeMemorySize();//FreeMemorySize 为获取到的剩余运行内存(字节)
```
## 获取内部SD卡路径
函数:public String getInternalSDCardPath()<br>
描述:获取 Android 设备内部 sdcard 路径<br>
示例:
```java
String sdcardPath = ZtlManager.GetInstance.getInternalSDCardPath();//sdcardPath 为 Android 设备内部 SDcard 路径
```
## 获取外部SD卡路径
函数:public String getExternalSDCardPath()<br>
描述:获取 Android 设备外部 sdcard 路径,比如说 TF 卡。<br>
示例:
```java
String externalSDCardPath = ZtlManager.GetInstance.getExternalSDCardPath();//externalSDCardPath 为 Android 设备外部 SD 卡路径
```
## 获取插入U盘个数
函数:public int getUSBDiskCount()<br>
描述:获取 Android 设备插入U盘个数<br>
示例:
```java
int USBDiskCunt = ZtlManager.GetInstance.getUSBDiskCount();//USBDiskCunt 为 Android 设备插入U盘个数
```
## 获取指定索引U盘路径
函数:public String getUSBDisk(int index)<br>
描述:获取 Android 设备指定索引U盘路径,适用于有多个U盘时使用<br>
参数说明:index:指定索引。<br>
示例:
```java
String USBPath = ZtlManager.GetInstance.getUSBDisk(1);//USBPath 为获取到的第1个U盘路径
```
## 获取U盘路径
函数:public String getUsbStoragePath()<br>
描述:获取 Android 设备 USB 储存器路径<br>
备注:因为监听系统广播的 media_mounted 返回的路径各个平台都不统一,所以如果想获取精确的U盘路径,推荐使用此接口。当U盘插入一段时间后,才能够返回正确的值。不插入U盘则返回 null。<br>
示例:
```java
String usbPath = ZtlManager.GetInstance.getUsbStoragePath();//usbPath 为 Android 设备的 U 盘存储器路径
```
## 休眠
函数:public void sleep()<br>
描述:设置 Android 系统进入休眠状态<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
说明:使用该接口不需要权限。在休眠状态下需定时执行唤醒语句,否则需要重启机器才能唤醒。<br>
注意:如果需要休眠后,要使当前 activity 继续运行,<br>
则需添加权限:android:name="android.permission.WAKE_LOCK" <br>
然后在 activity 里写: getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);<br>
示例:
```java
//Android 设备进入休眠状态
ZtlManager.GetInstance.sleep();
```
## 唤醒
函数:public void awake()<br>
描述:设置 Android 系统从休眠状态进入唤醒状态<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//Android 设备从休眠进入唤醒状态
ZtlManager.GetInstance.awake();
```
## 关机
函数:public void shutdown()<br>
描述:使 Android 系统进入关机状态。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
注意:在 OTG 连接到电脑的情况下,会导致关机变重启<br>
示例:
```java
//Android 系统进入关机状态
ZtlManager.GetInstance().shutdown();
```
## 重启
函数:public void reboot(int delay)<br>
描述:重启 Android 系统<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:delay:传入延迟时间,如不需要延迟,传入0即可<br>
示例:
```java
//10 秒后进入重启
ZtlManager.GetInstance().reboot(10);
```
## 截取当前屏幕
函数:public void startScreenShot(String path,String fileName)<br>
描述:截取当前屏幕并保存到指定路径<br>
参数说明:path:保存截图路径。fileName:文件名,后缀名需要为.png<br>
示例:
```java
//截取当前屏幕保存到/sdcard/1.png
ZtlManager.GetInstance.startScreenShot("/sdcard/","1.png");
```
## 设置系统桌面
函数:public void setLauncher(String pkgage,String Activity)<br>
描述:设置 Android 系统桌面,需要设置的 APP 必须已存在,否则设置不成功,且不报错。如果需要恢复成默认桌面,参数传入 null 即可。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:pkgage:需要设置桌面的APP包名。Activity:需要设置桌面的APP类名<br>
示例:
```java
/** 注意:设置的程序需要有以下属性成为桌面程序:
* <category android:name="android.intent.category.HOME"/>
* <category android:name="android.intent.category.DEFAULT"/>
*/
//替换Android系统桌面
ZtlManager.GetInstance.setLauncher("com.ztl.test","com.ztl.test.MainActivity");
```
## 设置普通APP为系统桌面
函数:public void setDesktop(String pkgage)<br>
描述:设置 Android 系统桌面,需要设置的 APP 必须已存在,否则设置不成功,且不报错。如果需要恢复成默认桌面,参数传入 null 即可。<br>
参数说明:pkgage:需要设置桌面的APP包名<br>
示例:
```java
//替换Android系统桌面
ZtlManager.GetInstance.setDesktop("com.ztl.test");
```
## 获取设置的系统桌面包名
函数:public String getDesktop()<br>
描述:获取设置的系统桌面包名<br>
参数说明:返回值:返回设置的系统桌面包名<br>
示例:
```java
String desktop = ZtlManager.GetInstance.getDesktop(); //desktop为获取的系统桌面包名
```
## 判断包名对应的APP是否存在
函数:public boolean isAppExist(String pkgName)<br>
描述:判断包名对应的 APP 是否存在设备中<br>
参数说明:pkgName:需要判断的APP包名。boolean:返回值,true = 存在; false = 不存在。<br>
示例:
```java
boolean isAPPExist = ZtlManager.GetInstance().isAppExist(pkgName);//isAPPExist 为判断 APP 是否存在的返回值
```
## 恢复出厂设置
函数:public void resetSystem()<br>
描述:Android 系统恢复出厂设置<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//Android 设备恢复出厂设置
ZtlManager.GetInstance().resetSystem();
```
## 打开设置界面
函数:public void startSettings()<br>
描述:打开系统设置界面<br>
示例:
```java
//打开系统设置界面
ZtlManager.GetInstance().startSettings();
```
## 打开wifi界面
函数:public void startWifiSettings()<br>
描述:打开系统 Wifi 设置界面<br>
示例:
```java
//打开 Android 系统 Wifi 设置界面
ZtlManager.GetInstance().startWifiSettings();
```
## 打开或关闭导航栏与状态栏
函数:public void openSystemBar(boolean bOpen)<br>
描述:是否已打开 Android 设备导航栏与状态栏<br>
参数说明:bOpen:传入 true(显示)或 false(隐藏)即可<br>
示例:
```java
//设置 Android 设备打开导航栏与状态栏
ZtlManager.GetInstance().openSystemBar(true);
```
## 获取当前导航栏状态
函数:public boolean isSystemBarOpen()<br>
描述:是否已打开 Android 设备导航栏与状态栏<br>
参数说明:返回值:true:显示;false:隐藏<br>
示例:
```java
boolean isSystemBarOpen = ZtlManager.GetInstance().isSystemBarOpen();//isSystemBarOpen 为导航栏与状态栏显示状态
```
## 设置USB调试状态
函数:public void openUsbDebug(boolean bOpen)<br>
描述:设置 Android 设备 USB 调试状态<br>
说明:cmd窗口可通过设置节点值实现:adb shell settings put global adb_enabled 0 ;0代表关闭,1代表打开(可用网络adb连接后设置)<br>
官方标准接口:Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ADB_ENABLED, 0);该接口需要程序设置为系统程序。<br>
参数说明:返回值:true:打开USB调试;false:关闭USB调试<br>
示例:
```java
//设置 Android 设备 USB 调试打开
ZtlManager.GetInstance().openUsbDebug(true);
```
## 获取USB调试状态
函数:public boolean isUsbDebugOpen()<br>
描述:判断 Android 系统 USB 调试是否已打开<br>
参数说明:返回值:true:USB调试已打开;false:USB调试未打开<br>
示例:
```java
boolean isUsbDebugOpen = ZtlManager.GetInstance().isUsbDebugOpen();//isUsbDebugOpen 为 USB 调试口状态
```
## OTG功能开关
函数:public boolean setUSBtoPC(boolean toPC)<br>
描述:设置 Android 设备 OTG 口连接状态。开,电脑才能识别这个设备。关就没有。开的时候可以通过 android studio 或者别的方式看 logcat,方便调试,发布等。但是发布后,推荐关闭。避免第三方 apk 安装或者系统信息被非法读取。如电脑识别不到 USB 连接时,请连续点击设备中的:设置/关于设备/版本号,开启开发者模式,当屏幕下方提示您已处于开发者模式时,返回设置界面,在下方会开启一个开发者选项,进入开发者选项,在调试中开启 USB 调试状态即可。<br>
参数说明:toPC:true:连接到PC;false:不连接PC<br>
示例:
```java
//设置 Android 设备打开 OTG 调试口
ZtlManager.GetInstance().setUSBtoPC(true);
```
## 获取OTG口连接状态
函数:public boolean getUSBtoPC()<br>
描述:获取 Android 设备 OTG 口连接状态<br>
参数说明:返回值:true:OTG口已打开;false:OTG口未打开<br>
示例:
```java
boolean USBconnectPC = ZtlManager.GetInstance().getUSBtoPC();// USBconnectPC 为 OTG 口状态
```
## 设置生成序列号
函数:public void setBuildSerial(String sn)<br>
描述:设置 Android 设备序列号。这个对应的是 Build.SERIAL。一般用于微信刷脸设置主板序列号用<br>
参数说明:sn:设置Android设备序列号<br>
示例:
```java
//设置 Android 设备序列号为"ztl-dz-test"
ZtlManager.GetInstance().setBuildSerial("ztl-dz-test");
```
## 获取生成的序列号
函数:public String getBuildSerial()<br>
描述:获取 Android 设备生成的序列号<br>
注意:获取到的序列号不保证唯一,如需唯一设备识别码,请使用CPUID,接口为:getDeviceID()<br>
参数说明:返回值:获取Android设备生成的序列号<br>
示例:
```java
String sn = ZtlManager.GetInstance().getBuildSerial();//sn 为获取到的 Android 设备生成的序列号
```
## 判断4G网络故障代码
函数:public static String get4gStatic(Context context)<br>
描述:判断4G网络故障代码,可用于获取到故障代码时,代码添加处理代码<br>
参数说明:参数说明:context:传入上下文,如:MainActivity.this等。<br>返回值:null:需要更新助手;<br>-101:助手没有可获取这个关键字值;<br>
0:4G网络正常<br>
1:没网络,但以注册<br>
-1002:4G的GPIO错误<br>
-2:4G模块断电状态<br>
-3:4G模块上电状态<br>
-4:没有注册,没有搜索到运营商<br>
-5:没有注册,正在搜索或正在注册<br>
-6:拒绝注册<br>
-7:信号错误或没插卡<br>
-8:未知错误<br>
-9:CGREG未知错误<br>
+CGREG 1:启用网络注册未经请求的结果代码<br>
+CGREG 2:启用网络注册和位置信息未经请求的结果代码<br>
示例:
```java
String state = ZtlManager.GetInstance().get4gStatic(this);//state 为获取到的4G故障码
```
## 判断系统是否支持看门狗功能
函数:public boolean hasWatchDog()<br>
描述:判断系统是否支持看门狗功能<br>
参数说明:返回值:true:支持 false:不支持<br>
示例:
```java
boolean isHas = ZtlManager.GetInstace().hasWatchDog();//isHas 为判断系统是否支持看门狗功能
```
## 打开看门狗并喂狗
函数:public boolean openWatchDog()<br>
描述:打开看门狗,并且进行喂狗,默认一分钟喂3次狗<br>
参数说明:返回值:true:打开成功 false:打开失败<br>
示例:
```java
boolean isOpen = ZtlManager.GetInstace().openWatchDog();//isOpen 为是否打开看门狗功能
```
## 关闭看门狗
函数:public boolean closeWatchDog()<br>
描述:关闭看门狗,停止喂狗<br>
参数说明:返回值:true:关闭成功 false:关闭失败<br>
示例:
```java
boolean isClose = ZtlManager.GetInstace().closeWatchDog();//isClose 为是否已关闭看门狗
```
## 判断看门狗是否正在运行
函数:public boolean isRunWatchDog()<br>
描述:判断看门狗是否正在运行<br>
参数说明:返回值:true:看门狗正在运行 false:看门狗未运行<br>
示例:
```java
boolean isRun = ZtlManager.GetInstace().isRunWatchDog();//isRun 为判断看门狗是否正在运行
```
## 读取看门狗的值
函数:public String watchDogValue()<br>
描述:判断看门狗是否正在运行<br>
参数说明:返回值:1:打开看门狗 2:看门狗喂狗 3:关闭看门狗<br>
示例:
```java
String value = ZtlManager.GetInstace().watchDogValue();//value 为获取到的看门狗的值
```
## 设置锁屏
函数:public void lockScreenSettings(boolean bEnable, String password)<br>
描述:设置安卓系统锁屏密码,设置完成后不会直接锁屏,需要调用lockScreen()接口。需要固件支持<br>
参数说明:参数:bEnable:true:启用锁屏 false:不启用 password:设置锁屏密码<br>
示例:
```java
ZtlManager.GetInstace().lockScreenSettings(true, "123456");//启用锁屏,设置密码为123456
```
## 锁屏
函数:public void lockScreen()<br>
描述:使用lockScreenSettings()接口设置密码后,调用此接口即可设置锁屏,需要固件支持<br>
示例:
```java
ZtlManager.GetInstace().lockScreen();//设置Android系统锁屏
```
## 执行cmd命令并获取返回值
函数:public static String execRootCmd(String cmd)<br>
描述:执行cmd命令并获取命令返回值<br>
示例:
```java
String strCmd = ZtlManager.GetInstace().execRootCmd("pm path com.ztl.test");//strCmd为获取到的cmd命令返回值
```
## 执行命令行
函数:public int execRootCmdSilent(String cmd)<br>
描述:su执行命令行,如su失效,则执行testsu<br>
示例:
```java
int result = ZtlManager.GetInstace().execRootCmdSilent("reboot");
//返回值参考:https://blog.csdn.net/qq_35661171/article/details/79096786
```
## 设置开机自启动
函数:public void setBootPackageActivity(String pkgName,String pkgActivity)<br>
描述:设置 Android 系统开机自启动 APP 包名和 类名<br>
用途:如果嫌广播自启动麻烦,则可调用此接口。此 api 只支持一个 app。多次设置,只有最后一次设置有效。但这个接口和广播自启动一样,需要程序启动一次。<br>
如果是生产环境中需要大批量多机器部署,则不现实。此时,可通过厂家发布固件内置 app,并将该 app 自启动。弊端:修改 build.prop 内置成系统应用(system/app 目录下)无法通过正常安装更新版本。<br>
build.prop修改方法:<br>
persist.sys.bootPkgName=com.ztl.test(填入需要自启动的包名)<br>
persist.sys.bootPkgActivity=com.ztl.test.MainActivity(填入需要自启动的类名)<br>
参数说明:pkgName:APP包名;pkgActivity:APP类名<br>
示例:
```java
//设置【系统设置】为开机自启动
ZtlManager.GetInstance.setBootPackageActivity("com.android.settings","com.android.settings.Settings");
```
## 获取设置的开机自启动APP的包名
函数:public String getBootPackageName()<br>
描述:获取 Android 设备开机自启动的 APP 包名<br>
参数说明:返回值:自启动APP包名<br>
示例:
```java
String pkgName = ZtlManager.GetInstance.getBootPackageName();//pkgName 为获取到的开机自启动 APP 包名
```
## 获取设置的开机自启动APP的类名
函数:public String getBootPackageActivity()<br>
描述:获取 Android 设备开机自启动的 APP 中的类名<br>
参数说明:返回值:自启动APP类名<br>
示例:
```java
String pkgActivity = ZtlManager.GetInstance.getBootPackageActivity();//pkgActivity 为获取到的开机自启动 APP 的 Activity 类名
```
## 启动另一个APP
函数:public void startActivity(String pkgName,String pkgActivity)<br>
描述:启动另一个 APP,标准做法的一种封装,更易于使用。<br>
参数说明:pkgName:要启动的APP包名;pkgActivity:要启动的APP类名<br>
示例:
```java
//打开【系统设置】界面
ZtlManager.GetInstance.startActivity("com.android.settings","com.android.settings.Settings");
```
## 静默安装APK
函数:public void installAppSilent(String filePath)<br>
描述:静默安装指定路径的 APK 文件<br>
备注:仅限于有 root 权限的固件使用。比如微信刷脸就不适用。没有 root 权限的用户可以调用如下接口完成此功能:InstallApp()、installAppAndStartUp()、installAppSilentAndRebootSystem()。<br>
参数说明:filePath:APK文件路径。<br>
示例:
```java
//静默安装 test.apk
ZtlManager.GetInstance().installAppSilent("/sdcard/test.apk");
```
## 无需root权限静默安装APK
函数:public void installApp(String filePath)<br>
描述:静默安装指定路径的 APK 文件<br>
备注:此接口无需系统权限,但需系统固件支持。 验证方法见文末附注。<br>
参数说明:filePath:APK文件安装路径。<br>
示例:
```java
//静默安装 /sdcard/test.apk
ZtlManager.GetInstance().installApp("/sdcard/test.apk");
```
## 卸载APP
函数:public void uninstallAppSilent(String packageName)<br>
描述:卸载指定包名的 APP<br>
参数说明:packageName:指定APP包名。<br>
示例:
```java
//卸载包名为 com.dc.test 的apk
ZtlManager.GetInstance().uninstallAppSilent("com.dc.test");
```
## 静默安装APK并且重启系统
函数:public void installAppSilentAndRebootSystem(String filePath,int reboot_in_sec)<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
描述:静默安装 APK 并且重启 Android 系统。如果是广播自启动的程序, 有 可 能 会 重 启 后 无 法 正 常 启 动 。 所 以 除 非 必 须 重 启 系 统 , 否 则 推 荐 使 用 installAppAndStartUp()。<br>
参数说明:filePath:APK所在路径;reboot_in_sec:安装开始时延迟多少秒后重启系统。<br>
示例:
```java
//安装/sdcard/目录下的test.apk,并且在10秒后重启安卓系统
ZtlManager.GetInstance().installAppSilentAndRebootSystem("/sdcard/test.apk", "10");
```
## 安装APP并启动安装的APP
函数:public void installAppAndStartUp(String filePath,String pkgName)<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
描述:安装 APK,并且在安装完成后启动所安装的 APP<br>
参数说明:filePath:APK所在路径;pkgName:要启动的APP包名。<br>
示例:
```java
//安装/sdcard/目录下的test.apk,并且在安装完成后启动包名为"com.dc.test"的APK
ZtlManager.GetInstance().installAppAndStartUp("/sdcard/test.apk", "com.dc.test");
```
## 守护进程
函数:接口1:public void keepActivity(String pkgName)<br>
备注:需要验证系统是否支持;验证方法:adb shell pm path com.ztl.appservice<br>
描述:保持APP置顶状态。在程序被切换到后台或关闭时,自动返回或启动该 app。保持该 app 在前端。用于售货机 ATM 广告机 等必须保活的应用。当需要打开系统设置界面或运行其他 app 暂时进行其他设置时,请先调用取消接口。否则会一直保持 app 置顶导致无法操作。<br>
参数说明:pkgName:需要保持置顶的APP<br>
示例:
```java
//保持包名为"com.dc.test"的 APP 置顶状态
ZtlManager.GetInstance().keepActivity("com.dc.test");
```
函数:接口2:public void keepActivity(String pkgName, int sec)<br>
备注:需要验证系统是否支持;验证方法:adb shell pm path com.ztl.appservice<br>
描述:保持APP置顶状态。在程序被切换到后台或关闭时,自动返回或启动该 app。保持该 app 在前端。用于售货机 ATM 广告机 等必须保活的应用。当需要打开系统设置界面或运行其他 app 暂时进行其他设置时,请先调用取消接口。否则会一直保持 app 置顶导致无法操作。<br>
参数说明:pkgName:需要保持置顶的APP;sec:设置保活时间,最低为2,如设置为2,会在守护程序退出后2s后进行拉起。<br>
示例:
```java
//保持包名为"com.dc.test"的 APP 置顶状态,设置保活时间为2s
ZtlManager.GetInstance().keepActivity("com.dc.test", 2);
```
## 取消守护进程
函数:public void unKeepActivity()<br>
备注:需要验证系统是否支持;验证方法:adb shell pm path com.ztl.appservice<br>
描述:取消守护进程,取消置顶状态。<br>
示例:
```java
//取消守护进程
ZtlManager.GetInstance().unKeepActivity();
```
## 保活某个服务
函数:接口1:public void keepService(String packageName, String service)<br>
备注:需要验证系统是否支持;验证方法:adb shell pm path com.ztl.appservice<br>
描述:保活某个服务,不被系统回收。<br>
参数说明:packageName:保活服务的APP包名;service:需要保活的服务。<br>
示例:
```java
//保活服务"com.dc.test.testService"不被系统回收
ZtlManager.GetInstance().keepService("com.dc.test", "com.dc.test.testService");
```
函数:接口2:public void keepService(String packageName, String service, int sec)<br>
备注:需要验证系统是否支持;验证方法:adb shell pm path com.ztl.appservice<br>
描述:保活某个服务,不被系统回收。<br>
参数说明:packageName:保活服务的APP包名;service:需要保活的服务;sec:设置保活时间,最低为2s<br>
示例:
```java
//保活服务"com.dc.test.testService"不被系统回收,设置每2s检测一次
ZtlManager.GetInstance().keepService("com.dc.test", "com.dc.test.testService", 2);
```
## 取消保活某个服务
函数:public void unKeepService()<br>
备注:需要验证系统是否支持;验证方法:adb shell pm path com.ztl.appservice<br>
描述:取消保活某个服务,此操作并不会杀死这个服务。<br>
示例:
```java
//取消保活服务
ZtlManager.GetInstance().unKeepService();
```
## APP使用硬件看门狗
函数:public void WatchDog()<br>
描述:APP使用硬件看门狗,自动禁止系统喂狗<br>
备注:<br>
1.硬件要支持<br>
2.系统要支持(设置-其他设置 版本号大于等于 20211029)<br>
3.系统开机默认是系统自动喂狗<br>
4.调用此接口,系统自动停止喂狗,由用户自己喂狗,不继续喂狗,系统会自动重启(200秒左右,具体时间按实际为准)<br>
5.调此接口就是喂狗一次,需要重复调用,建议20秒喂一次<br>
6.要把板子的跳线帽拔掉,才启用看门狗,不拔,看门狗无效,不会重启系统<br>
说明:调用此接口后,继续调用feedHardwareWatchDog();即可进行app喂狗
示例:
```java
ZtlManager.GetInstance().WatchDog();
```
# 时间
## 获取系统日期
函数:public String getSystemDate()<br>
描述:获取 Android 设备系统日期<br>
参数说明:返回值:获取Android系统日期,格式为 yyyy/MM/dd。<br>
示例:
```java
String systemDate = ZtlManager.GetInstance().getSystemDate(); //systemDate 为获取到的 Android 系统日期
```
## 获取系统时间
函数:public String getSystemTime()<br>
描述:获取 Android 设备系统时间<br>
参数说明:返回值:获取Android系统时间,格式为 HH:mm:ss。<br>
示例:
```java
String systemTime = ZtlManager.GetInstance().getSystemTime(); //systemTime 为获取到的 Android 系统时间
```
## 立刻同步网络时间
函数:public void syncNetworkTime()<br>
描述:获取 Android 设备系统日期<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
用途:一般来说,系统联网的情况下,时间都会同步。但如果应用程序对时间精度有更高要 求,可以通过此接口强行同步时间。<br>
示例:
```java
//设置Android系统立刻同步时间
ZtlManager.GetInstance.syncNetworkTime();
```
## 设置同步时间的间隔
函数:public void syncNetworkTimePeroid(int peroidInMinute)<br>
描述:设置同步网络时间间隔。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:peroidInMinute:同步时间周期,分钟制。<br>
示例:
```java
//间隔 10 分钟同步一次网络时间
ZtlManager.GetInstance().syncNetworkTimePeroid(10);
```
## 设置系统日期与时间
函数:public void setSystemTime(Calendar cal)<br>
描述:设置 Android 设备系统日期与时间。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:cal:传入需要设置的时间即可。<br>
示例:
```java
//设置 Android 设备系统日期时间为 2020 年 10 月 10 日 10 时 10 分
Calendar cal = Calendar.getInstance();
cal.set(2020,10,10,10,10);
ZtlManager.GetInstance().setSystemTime(cal);
```
函数:public void setSystemTime(long timeinmili)<br>
描述:设置 Android 设备系统日期与时间。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:timeinmili:传入需要设置的时间即可(毫秒)。<br>
示例:
```java
//设置 Android 设备系统日期时间为 2020 年 10 月 10 日 10 时 10 分
long setTime = 1602295800000;
ZtlManager.GetInstance().setSystemTime(setTime);
```
## 判断系统的时区是否为自动获取
函数:public boolean isAutoTimezone()<br>
描述:判断 Android 系统的时区是否为自动获取<br>
参数说明:返回值:true:自动获取;false:手动设置。<br>
示例:
```java
boolean isAutoTimezone = ZtlManager.GetInstance().isAutoTimezone(); //isAutoTimezone 为获取到的 Android 系统时区状态
```
## 设置系统时区开关
函数:public void setAutoTimezone(boolean bAuto)<br>
描述:设置 Android 系统的自动选择时区开关<br>
参数说明:bAuto:true:自动获取;false:手动设置。<br>
备注:需要程序成为系统程序或申请相关权限:
android:sharedUserId="android.uid.system" <!--成为系统程序-->
android:name="android.permission.WRITE_SETTINGS"
android:name="android.permission.WRITE_SECURE_SETTINGS"
android:name="android.permission.SET_TIME_ZONE"
示例:
```java
//设置 Android 设备系统时区为自动获取
ZtlManager.GetInstance().setAutoTimezone(true);
```
## 判断系统的时间是否自动获取
函数:public boolean isAutoDateTime()<br>
描述:判断 Android 系统的时间是否为自动获取<br>
参数说明:返回值:true:自动获取;false:手动设置。<br>
示例:
```java
boolean autoDateTime = ZtlManager.GetInstance().isAutoDateTime(); //autoDateTime 为判断系统的时间是否自动获取
```
## 设置系统的自动确定日期与时间开关
函数:public void setAutoDateTime(boolean bAuto)<br>
描述:设置Android系统的自动确定日期与时间的开关<br>
参数说明:bAuto:true:自动获取;false:手动设置。<br>
备注:需要程序成为系统程序或申请相关权限:
android:sharedUserId="android.uid.system" <!--成为系统程序-->
android:name="android.permission.WRITE_SETTINGS"
android:name="android.permission.WRITE_SECURE_SETTINGS"
android:name="android.permission.SET_TIME_ZONE"
示例:
```java
//设置 Android 设备系统日期与时间为自动获取
ZtlManager.GetInstance().setAutoDateTime(true);
```
## 定时关机
函数:public void setSchedulePowerOff(int hour, int minute, boolean enableSchedulPowerOff)<br>
描述:设置 Android 系统定时关机,有效期为每天<br>
参数说明:hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);enableSchedulPowerOff:使能/关闭定时关机<br>
备注:使能或者关闭定时开关机功能,直接设置第三个参数为true(使能)/false(关闭)---**该接口已废弃,推荐使用新接口**:setPoweroffEveryday();参数不变<br>
示例:
```java
//设置 Android 设备 12:10 每天定时关机
ZtlManager.GetInstance().setSchedulePowerOff(12,10,true);
```
## 定时开机
函数:public void setSchedulePowerOn(int hour, int minute, boolean enableSchedulPowerOn)<br>
描述:设置 Android 系统定时开机,有效期为每天<br>
参数说明:hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);enableSchedulPowerOn:使能/关闭定时开机<br>
备注:使能或者关闭定时开关机功能,直接设置第三个参数为true(使能)/false(关闭)---**该接口已废弃,推荐使用新接口**:setPoweronEveryday();参数不变<br>
示例:
```java
//设置 Android 设备 12:11 每天定时开机
ZtlManager.GetInstance().setSchedulePowerOn(12,11,true);
```
## 设置系统指定某天定时关机
函数:public void setPowerOffAlarm(int year, int month, int day, int hour, int minute, boolean enableSchedulPowerOff)<br>
描述:设置 Android 系统定时关机,有效期为一次性<br>
参数说明:year:年;month:月;day:日;hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);enableSchedulPowerOff:使能/关闭定时关机<br>
说明:**该接口已废弃,推荐使用新接口**:setPoweroffOnce();参数不变<br>
示例:
```java
//设置 Android 设备 2020 年 7 月 12 日 12:12 定时关机
ZtlManager.GetInstance().setPowerOffAlarm(2020,7,12,12,12,true);
```
## 设置系统指定某天定时开机
函数:public void setPowerOnAlarm(int year, int month, int day, int hour, int minute, boolean enableSchedulPowerOn)<br>
描述:设置 Android 系统定时开机,有效期为一次性<br>
参数说明:year:年;month:月;day:日;hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);enableSchedulPowerOn:使能/关闭定时开机<br>
说明:**该接口已废弃,推荐使用新接口**:setPoweronOnce();参数不变<br>
示例:
```java
//设置 Android 设备 2020 年 7 月 12 日 12:13 定时开机
ZtlManager.GetInstance().setPowerOnAlarm(2020, 7, 12, 12, 13, true);
```
## 自定义周期定时关机
函数:public void setPoweroffCustom(int hour, int minute, int weekDays, boolean bEnable)<br>
描述:设置 Android 系统自定义定时关机<br>
参数说明:hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);weekDays:周期,计算周期方式:计算器-程序员-按位计算,一周为七天,第一位为周日(数值为1),第二位为周一(数值为2),第三位为周二(数值为4),第四位为周三(数值为8),第五位为周四(数值为16),第六位为周五(数值为32),第七位为周六(数值为64),可按照数值相加,来定制自定义周期定时关机,可填入0(代表执行一次),填入127(代表每天);bEnable:使能/关闭定时关机<br>
示例:
```java
//设置 Android 设备 周一至周五12:10定时关机
ZtlManager.GetInstance().setPoweroffCustom(12, 10, 62, true);
```
## 自定义周期定时开机
函数:public void setPoweronCustom(int hour, int minute, int weekDays, boolean bEnable)<br>
描述:设置 Android 系统自定义定时开机<br>
参数说明:hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);weekDays:周期,计算周期方式:计算器-程序员-按位计算,一周为七天,第一位为周日(数值为1),第二位为周一(数值为2),第三位为周二(数值为4),第四位为周三(数值为8),第五位为周四(数值为16),第六位为周五(数值为32),第七位为周六(数值为64),可按照数值相加,来定制自定义周期定时关机,可填入0(代表执行一次),填入127(代表每天);bEnable:使能/关闭定时开机<br>
示例:
```java
//设置 Android 设备 周一至周五12:11定时开机
ZtlManager.GetInstance().setPoweronCustom(12, 11, 62, true);
```
## 定时重启
函数:public void timingReboot(int hour, int minute, int week, boolean enable)<br>
描述:设置 Android 系统定时重启,可自选周期<br>
参数说明:hour:时(0 <= hour < 24);minute:分(0 <= minute < 60);<br>week:周期,计算周期方式:计算器-程序员-按位计算,一周为七天,第一位为周日(数值为1),第二位为周一(数值为2),第三位为周二(数值为4),第四位为周三(数值为8),第五位为周四(数值为16),第六位为周五(数值为32),第七位为周六(数值为64),可按照数值相加,来定制自定义周期定时重启,可填入0(代表执行一次),填入127(代表每天);<br>enable:使能/关闭定时重启<br>
示例:
```java
//设置 Android 设备 周一至周五中午十二时重启
ZtlManager.GetInstance().timingReboot(12, 0, 62, true);
```
## 设置系统指定某天定时重启
函数:public void timingRebootAlarm(int year, int month, int day, int hour, int minute, boolean enable)<br>
描述:设置 Android 系统定时重启,执行一次<br>
参数说明:year:年;month:月;day:日;hour:时;minute:分;enable:使能\关闭定时重启<br>
示例:
```java
//设置 Android 设备 2021年5月1日12时重启
ZtlManager.GetInstance().timingRebootAlarm(2021, 5, 1, 12, 0, true);
```
# 显示
## 获取屏幕分辨率
函数:public String getDisplayMode()<br>
描述:获取 Android 系统的屏幕分辨率<br>
参数说明:返回值:获取Android设备的屏幕分辨率<br>
示例:
```java
String displayMode = ZtlManager.GetInstance().getDisplayMode(); //displayMode 为 Android 系统的屏幕分辨率
```
## 获取屏幕分辨率Y轴像素
函数:public int getDisplayHeight()<br>
描述:获取 Android 设备显示分辨率 Y 轴像素<br>
参数说明:返回值:获取Android设备的分辨率Y轴像素<br>
示例:
```java
int screenHeight = ZtlManager.GetInstance().getDisplayHeight(); //screenHeight 为 Android 设备的显示分辨率 Y 轴像素
```
## 获取屏幕分辨率X轴像素
函数:public int getDisplayWidth()<br>
描述:获取 Android 设备显示分辨率 X 轴像素<br>
参数说明:返回值:获取Android设备的分辨率X轴像素<br>
示例:
```java
int screenWidth = ZtlManager.GetInstance().getDisplayWidth(); //screenWidth 为 Android 设备的显示分辨率 X 轴像素
```
## 获取屏幕显示密度
函数:public int getDisplayDensity()<br>
描述:获取 Android 设备屏幕显示密度(dpi)<br>
参数说明:返回值:获取Android设备显示密度<br>
示例:
```java
int screenDpi = ZtlManager.GetInstance().getDisplayDensity(); //screenDpi 为 Android 设备的屏幕显示密度
```
## 设置屏幕显示密度
函数:public void setDisplayDensity(int dips)<br>
描述:设置 Android 设备屏幕显示密度(dpi)<br>
备注:此接口会导致系统重启,重启生效。<br>
参数说明:dpis:支持120;160;240;320;或其他自定义值<br>
示例:
```java
//设置 Android 设备屏幕显示密度为 120
ZtlManager.GetInstance().setDisplayDensity(120);
```
## 是否设置背光反向
函数:public void reverseBrighness(boolean true_or_false)<br>
描述:设置背光是否反向<br>
备注:如果出现背光反向问题(即为调整亮度,调整越亮实际变暗,或者调整亮度越暗实际 变亮),可使用该接口来调整背光问题。<br>
参数说明:true_or_false:true:调整背光为反向;false:不调整。<br>
示例:
```java
//设置 Android 设备背光反向
ZtlManager.GetInstance().reverseBrighness(true);
```
## 获取背光是否已反向
函数:public boolean isReverseBrighness()<br>
描述:获取 Android 设备背光是否已方向<br>
参数说明:返回值:true:已反向;false:未反向。<br>
示例:
```java
boolean isReverse = ZtlManager.GetInstance().isReverseBrighness(); //isReverse 为获取到的背光方向信息
```
## 获取当前亮度
函数:public int getSystemBrightness()<br>
描述:获取 Android 设备系统当前亮度<br>
参数说明:返回值:Android系统亮度。<br>
示例:
```java
int systemBri = ZtlManager.GetInstance().getSystemBrightness(); //systemBri 为 Android 系统当前亮度
```
## 获取最大亮度值
函数:public int getSystemMaxBrightness()<br>
描述:获取 Android 设备系统最大亮度值<br>
参数说明:返回值:Android系统最大亮度值。<br>
示例:
```java
int maxBrightness = ZtlManager.GetInstance().getSystemMaxBrightness(); //maxBrightness 为 Android 系统最大亮度
```
## 增大亮度值
函数:public void increaseBrightness()<br>
描述:设置系统亮度+1<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//设置 Android 系统亮度+1
ZtlManager.GetInstance().increaseBrightness();
```
## 降低亮度值
函数:public void decreaseBrightness()<br>
描述:设置系统亮度-1<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//设置 Android 系统亮度-1
ZtlManager.GetInstance().decreaseBrightness();
```
## 设置系统亮度
函数:public void setBrightness(int brightness)<br>
描述:设置系统亮度<br>
备注:HDMI 和 VGA 暂不支持调整,需系统固件支持。 验证方法见文末附注。<br>
参数说明:brightness:亮度值:0-255。
示例:
```java
//设置 Android 系统亮度为 200
ZtlManager.GetInstance().setBrightness(200);
```
## 设置屏幕方向
函数:public void setDisplayOrientation(int rotation)<br>
描述:设置 Android 系统显示方向<br>
备注:一般用于固件默认方向和实际屏幕不一致时使用。当 app 需要适应屏幕方向时,推荐 app 做处理而不是旋转整个系统。<br>
参数说明:rotation:0:0度;90:90度(默认角度旋转90度);180:180度(默认角度旋转180度);270:270度(默认角度旋转270度)。<br>
示例:
```java
//设置 Android 系统屏幕方向旋转 90 度
ZtlManager.GetInstance().setDisplayOrientation(90);
```
## 设置副屏方向
函数:public void setExtendDisplayOrientation(int rotation)<br>
描述:设置 Android 系统副屏显示方向<br>
备注:一般用于固件默认方向和实际屏幕不一致时使用。当 app 需要适应屏幕方向时,推荐 app 做处理而不是旋转整个系统。<br>
参数说明:rotation:0:0度;90:90度(默认角度旋转90度);180:180度(默认角度旋转180度);270:270度(默认角度旋转270度)。<br>
示例:
```java
//设置 Android 系统副屏方向旋转 90 度
ZtlManager.GetInstance().setExtendDisplayOrientation(90);
```
## 设置多屏幕方向
函数:public int setDisplayOrientation(int screen, int rotation)<br>
描述:设置 Android 系统多屏幕方向<br>
备注:一般用于固件默认方向和实际屏幕不一致时使用。当 app 需要适应屏幕方向时,推荐 app 做处理而不是旋转整个系统。<br>
参数说明:screen:要设置的屏幕:0:主屏;1:副屏1;2:副屏2...以此类推,-1为同时显示;<br>
rotation:0:0度;90:90度(默认角度旋转90度);180:180度(默认角度旋转180度);270:270度(默认角度旋转270度)。<br>
返回值:-1:不支持;0:设置成功
示例:
```java
//设置 Android 系统所有屏幕方向旋转 90 度
int value = ZtlManager.GetInstance().setDisplayOrientation(-1, 90);
```
## 获取屏幕方向
函数:接口1:public int getDisplayOrientation()<br>
描述:获取 Android 系统屏幕显示方向<br>
参数说明:返回值:0:当前屏幕方向为0度;90:当前屏幕方向为90度;180:当前屏幕方向为180度;270:当前屏幕方向为270度。<br>
示例:
```java
int rotation = ZtlManager.GetInstance().getDisplayOrientation(); //rotation 为获取到的 Android 系统屏幕显示方向
```
函数:接口2:public int getDisplayOrientation(int screen)<br>
描述:获取 Android 系统指定屏幕显示方向<br>
参数说明:返回值:-1:不支持此功能;0:当前屏幕方向为0度;90:当前屏幕方向为90度;180:当前屏幕方向为180度;270:当前屏幕方向为270度。<br>
screen:0:获取主屏方向;1:获取副屏1屏幕方向;2:获取副屏2屏幕方向<br>
示例:
```java
int rotation = ZtlManager.GetInstance().getDisplayOrientation(0); //rotation 为获取到的 Android 系统主屏显示方向
```
## 设置触摸方向
函数:public void setTouchOrientation(int orientation, boolean rebootnow)<br>
描述:设置 Android 系统触摸方向(重启生效)<br>
备注:仅限于触摸屏上下左右同时互反的时候设置起作用。如设置完仍不起作用,请联系厂 家技术支持。<br>
参数说明:orientation:0:触摸方向顺时针旋转0度;90:触摸方向顺时针旋转90度;180:触摸方向顺时针旋转180度;270:触摸方向顺时针旋转270度。rebootnow:true:执行重启;false:不执行重启。<br>
示例:
```java
//设置 Android 系统触摸方向方向顺时针 90 度并且重启
ZtlManager.GetInstance().setTouchOrientation(90,true);
```
## 获取触摸方向
函数:public int getTouchOrientation()<br>
描述:获取 Android 设备触摸方向<br>
参数说明:返回值:0:当前触摸方向为0度;90:当前触摸方向为90度;180:当前触摸方向为180度;270当前触摸方向为270度;<br>
示例:
```java
int TpOrientation = ZtlManager.GetInstance().getTouchOrientation(); //TpOrientation 为获取到的 Android 系统触摸方向
```
## 获取支持的分辨率列表
函数:public String[] getScreenModes()<br>
描述:获取 Android 支持的分辨率列表<br>
注意:3288-5.1 与 3288-7.1 此接口返回 null,暂不支持获取分辨率列表,如果其他版型获取到的分辨率列表为空,请检查 HDMI 连接是否正常。<br>
参数说明:返回值:获取屏幕支持的分辨率列表。<br>
示例:
```java
String modes[] = ZtlManager.GetInstance().getScreenModes(); //modes[]为 Android 系统屏幕支持的分辨率
```
## 设置分辨率
函数:public void setScreenMode(String mode)<br>
描述:设置 Android 系统输出分辨率,系统将进入重启。(重启生效)<br>
说明:此接口适用于 lvds,替换屏参的一种方式。<br>
参数说明:mode:需要设置的分辨率,具体参考系统支持的分辨率。<br>
示例:
```java
//设置系统输出分辨率为 1920x1080 模式
ZtlManager.GetInstance().setScreenMode("1920x1080@60p");
```
## 设置桌面壁纸
函数:public void setWallpaper(String filePath)<br>
描述:设置Android系统桌面壁纸,需要固件支持<br>
参数说明:filePath:壁纸所在路径,如"/sdcard/1.png"<br>
示例:
```java
ZtlManager.GetInstace().setWallpaper("/sdcard/1.png");//设置Android系统桌面壁纸为/sdcard/目录下的1.png
```
## 设置字体大小
函数:public void setFontSize(int index)<br>
描述:设置Android系统字体大小<br>
参数说明:index:1:较小; 2:正常; 3:较大; 4:最大<br>
示例:
```java
ZtlManager.GetInstace().setFontSize(4);//设置Android系统字体为最大显示
```
## 获取固件所支持的屏幕个数
函数:public int getDisplayCount()<br>
描述:获取固件所支持的屏幕个数<br>
参数说明:返回值:获取支持显示屏幕个数<br>
示例:
```java
int count = ZtlManager.GetInstace().getDisplayCount();//count为获取固件支持屏幕个数
```
# 网络
## 获取MAC地址
函数:public String getMacAddress()<br>
描述:获取 Android 系统 MAC 地址。这里获取的是 eth0 节点的 mac<br>
参数说明:返回值:Android设备MAC地址。<br>
示例:
```java
String MacAddress = ZtlManager.GetInstance().getMacAddress(); //MacAddress 为获取到的 Android 系统 Mac 地址
```
## 获取IPv4地址
函数:public String getLocalIpAddress()<br>
描述:获取 Android 系统 IPv4 地址<br>
备注:需要申请权限:android:name="android.permission.ACCESS_NETWORK_STATE"<br>
参数说明:返回值:Android设备APv4地址。<br>
示例:
```java
String IPv4Address = ZtlManager.GetInstance().getLocalIpAddress(); //IPv4Address 为获取到的 Android 系统 IPv4 地址
```
## 获取当前连接的网络类型
函数:public int getNetWorkType()<br>
描述:获取 Android 系统当前连接的网络类型<br>
备注:一般用于检测 wifi 和以太网同时连接时判断连接的是哪个网络。<br>
需要申请权限:android:name="android.permission.ACCESS_NETWORK_STATE"<br>
参数说明:返回值:-1:未知网络;0:以太网;1:wifi;2:2g;3:3g;4:4g;5:5g<br>
示例:
```java
int netWorkType = ZtlManager.GetInstance().getNetWorkType(); //NetWorkType 为返回的当前联网类型
```
## 指定wifi掉线重连
函数:public void keepWifiConnect(String SSID, String password)<br>
描述:连接指定 wifi 断线重连。由于 wifi 信号强度差或所连的 wifi 网络不可达等原因, 系统有时不会重连到指定网络。启用这个功能后,系统会保持连接到指定 wifi。请确保所 用的 wifi 在信号范围内,且能正常连接。如果启用该功能后,锁定的 wifi 不在信号范围内, 可以正常连接其他 wifi。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:SSID:WiFi名称;password:WiFi密码。<br>
示例:
```java
//连接到指定的 wifi,并且保持断线重连状态
ZtlManager.GetInstance().keepWifiConnect("ZTLDZ","12345678");
```
## 指定wifi停止掉线重连
函数:public void stopKeepWifiConnect()<br>
描述:将 keepWifiConnect 配置的 wifi 不自动重连。此功能不会导致当前的 wifi 断开或关闭。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//停止自动连接到指定 wifi
ZtlManager.GetInstance().stopKeepWifiConnect();
```
## 禁用或启用网络ADB
函数:public void setNetAdb(boolea bEnable)<br>
描述:启用:在没有 OTG 线的情况下,可启用网络 adb 连接网线进行调试。禁用:可保护主板信息不外泄。<br>
参数说明:bEnable:true:启用网络adb调试;false:不启用网络adb调试。<br>
示例:
```java
//设置 Android 设备启用网络 adb
ZtlManager.GetInstance().setNetAdb(true);
```
## 打开热点
函数:public void openAp(String ssid, String psw)<br>
描述:设置 Android 设备打开热点。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
说明:API 设置的热点名称如果小于6位,会自动在后面添加6位MAC地址,如果热点名称大于6位,不会自动加任何东西。<br>
可通过固件修改工具修改 build.prop 来设置开机启动热点功能,用法如下: persist.ztl.openap=ZTL/123456789 就会生成 ZTL-MAC(后三位)的热点,密码 123456789<br>
参数说明:ssid:热点名称;psw:热点密码。<br>
示例:
```java
//设置 Android 设备打开热点:接入点名称为"Ztl-test",密码为"123456789"
ZtlManager.GetInstance().openAp("Ztl-test","123456789");
```
## 关闭热点
函数:public void closeAp()<br>
描述:关闭已打开的 Android 设备热点。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//关闭已打开的 Android 设备热点
ZtlManager.GetInstance().closeAp();
```
## 获取指定网络的IPv4地址
函数:public String getIPv4(String nettype)<br>
描述:获取 Android 设备指定网络的 IPv4 地址。<br>
参数说明:nettype:ech0:以太网;wlan0:wifi;ppp0:电话卡。返回值:获取到的IPv4地址<br>
示例:
```java
String getIPv4address = ZtlManager.GetInstance().getIPv4("wlan0"); //getIPv4address 为获取到的wifi IPv4地址
```
## 设置以太网配置信息
函数:public void setEthIP(boolean bStatic, String ip, String mask, String gate, String dns, String dns2)<br>
描述:设置 Android 设备以太网模式与配置信息,如以太网 ip 地址等。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
说明:如果需要设置动态获取,第一个参数传入false,其他参数传入null即可。<br>
参数说明:bStatic:true:静态地址;false:动态获取。ip:需要设置的IP地址。mask:需要设置的子网掩码。gate:需要设置的网关。dns:需要设置的dns1。dns2:需要设置的dns2。<br>
示例:
```java
//设 置 以 太 网 为 静 态 设 置 , ip 地 址 为 192.168.101.111 , 子 网 掩 码 地 址 为 : 255.255.255.0,网关地址为:192.168.101.5,dns 地址为:192.168.101.1,dns2 地址为: 192.168.101.2
ZtlManager.GetInstance().setEthIP(false, "192.168.101.112", "255.255.255.0", "192.168.101.5", "192.168.101.1", "192.168.101.2");
```
## 设置以太网配置信息多网卡设置
函数:public void setEthIP(boolean bStatic,String name, String ip, String mask, String gate, String dns, String dns2)<br>
描述:设置 Android 设备以太网模式与配置信息,如以太网 ip 地址等。<br>
备注:需系统固件支持。(设置,其他设置,检测更新,版本大于等20220121)<br>
说明:如果需要设置动态获取,第一个参数传入false和网卡名称,其他参数传入null即可。<br>
参数说明:bStatic:true:静态地址;false:动态获取。name:网卡名称。ip:需要设置的IP地址。mask:需要设置的子网掩码。gate:需要设置的网关。dns:需要设置的dns1。dns2:需要设置的dns2。<br>
示例:
```java
//设 置 以 太 网 eth0网卡为 静 态 设 置 , ip 地 址 为 192.168.101.111 , 子 网 掩 码 地 址 为 : 255.255.255.0,网关地址为:192.168.101.5,dns 地址为:192.168.101.1,dns2 地址为: 192.168.101.2
ZtlManager.GetInstance().setEthIP(false,"eth0", "192.168.101.112", "255.255.255.0", "192.168.101.5", "192.168.101.1", "192.168.101.2");
```
## 设置WIFI配置信息
函数:public void setWifiIP(String ssid, String psw, boolean bStatic, String ip, String mask, String gate, String dns, String dns2)<br>
描述:设置 Android 设备 wifi 配置信息,如:ip 地址等。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
说明:如果未连接 wifi,第一个第二个参数传入 wifi 名称和密码会自动连接该 wifi。<br>
参数说明:ssid:wifi名称。psw:wifi密码。bStatic:true:静态地址;false:动态获取。ip:需要设置的IP地址。mask:需要设置的子网掩码。gate:需要设置的网关。dns:需要设置的dns1。dns2:需要设置的dns2。<br>
示例:
```java
//设置连接 wifi 模式为静态设置,ip 地址为 192.168.101.111,子网掩码地址为: 255.255.255.0,网关地址为:192.168.101.5,dns 地址为:192.168.101.1,dns2 地址为: 192.168.101.2
ZtlManager.GetInstance().setWifiIP("ztldz","12345678", true, "192.168.101.111", "255.255.255.0", "192.168.101.5", "192.168.101.1", "192.168.101.2");
```
## 设置WIFI热点
函数:public void setWifiApConfig(String SSID, String Password, int channel, int WifiMode, boolean enable)<br>
描述:设置 Android 设备 wifi 热点配置信息<br>
参数说明:SSID:热点名称。Password:热点密码。channel:频段设置,如149;153;157;161;165。WifiMode:设置WiFi频段,如:0:2.4G;1:5G。enable:taur:打开热点;false:关闭热点<br>
示例:
```java
//设置打开wifi热点名称为:ztldz;wifi密码为12345678;频段设置为157;wifi频段设置为5G.
ZtlManager.GetInstance().setWifiApConfig("ztldz","12345678", 157, 1, true);
```
## 启用或禁用4G模块断线自动重连
函数:public void enable4GReset(boolean bEnable)<br>
描述:启用或禁用 4G 模块断线自动重连。<br>
备注:需系统固件支持。 验证方法见文末附注。一般用于没有 4G 模块掉线自动重连的固件。批量生产请在 build.prop 中添加:persist.ztl.4greset=0/1<br>
参数说明:bEnable:true:使能4G模块掉线重连;false:不使能4G模块掉线重连。<br>
示例:
```java
//设置 Android 使能 4G 模块断线自动重连
ZtlManager.GetInstance().enable4GReset(true)
```
## 获取4G模块IMEI信息
函数:public String getImei()<br>
描述:获取 Android 系统 4G 模块的国际移动用户识别码(IMEI)<br>
备注:需要 app 申请权限:android.permission.READ_PHONE_STATE<br>
参数说明:返回值:4G模块IMEI信息<br>
示例:
```java
String getImei = ZtlManager.GetInstance().getImei(); //getImei 为获取到的 Android 系统安装 4G 模块的 IMEI 信息
```
## 获取SIM卡TEL信息
函数:public String getSimTel()<br>
描述:获取 Android 系统 SIM 卡的号码信息<br>
备注:需要 app 申请权限:android.permission.READ_PHONE_STATE<br>
参数说明:返回值:SIM 卡的号码信息<br>
示例:
```java
String simtel = ZtlManager.GetInstance().getSimTel(); //simtel 为获取到的 Android 系统 SIM 卡的号码信息
```
## 获取SIM卡ICCID信息
函数:public String getSimIccid()<br>
描述:获取 Android 系统 SIM 卡的 Iccid 信息<br>
备注:需要 app 申请权限:android.permission.READ_PHONE_STATE<br>
参数说明:返回值:SIM 卡的 ICCID 信息<br>
示例:
```java
String simIccid = ZtlManager.GetInstance().getSimIccid(); //simIccid 为获取到的 Android 系统 SIM 卡的 Iccid 信息
```
## 获取SIM卡IMSI信息
函数:public String getSimImsi()<br>
描述:获取 Android 系统 SIM 卡的国际移动用户识别码(IMSI)<br>
备注:需要 app 申请权限:android.permission.READ_PHONE_STATE<br>
参数说明:返回值:SIM 卡的 IMSI 信息<br>
示例:
```java
String simIMSI = ZtlManager.GetInstance().getSimImsi(); //simIMSI 为获取到的 Android 系统 SIM 卡的号码信息
```
## 获取SIM卡运营商信息
函数:public String getSimOperator()<br>
描述:获取 Android 系统 SIM 卡的运营商信息<br>
备注:需要 app 申请权限:android.permission.READ_PHONE_STATE<br>
参数说明:返回值:SIM 卡的运营商信息<br>
示例:
```java
String simOperator = ZtlManager.GetInstance().getSimOperator(); //simOperator 为获取到的 Android 系统 SIM 卡的运营商信息
```
## 获取4G模块基带版本信息
函数:public String getBaseBand()<br>
描述:获取4G模块基带版本信息<br>
参数说明:返回值:4G模块基带版本信息<br>
示例:
```java
String strBand = ZtlManager.GetInstance().getBaseBand();
```
## 设置APN
函数:public void setAPN(String apn)<br>
描述:设置指定的APN<br>
备注:注意:设置前应使用hasAPN接口查询系统是否支持这个接口和是否已存在此APN<br>
参数说明:要设置的APN<br>
示例:
```java
ZtlManager.GetInstance().setAPN("cnmet"); //设置cnmet
```
## 查询APN是否存在
函数:public String hasAPN(String apn)
描述:查询指定的APN是否存在<br>
备注:查询apn是否存在<br>
参数说明:要查询的APN<br>
返回值:null表示没有初始化API或系统没有这接口,“-1”,不存在,其他已存在<br>
示例:
```java
String flag = ZtlManager.GetInstance().hasAPN("cnmet"); //查询cnmet是否存在
```
# 文件
## 获取文件后缀名
函数:public String getFileType(String filePath)<br>
描述:获取指定文件的后缀名<br>
参数说明:filePath:文件路径;返回值:文件后缀名<br>
示例:
```java
String fileType = ZtlManager.GetInstance().getFileType("/sdcard/test.apk"); //fileType 为获取到的文件后缀名
```
## 判断文件是否存在
函数:public boolean isExist(String path)<br>
描述:获取指定路径文件的后缀名<br>
参数说明:Path:文件路径;返回值:true:文件存在;false:文件不存在<br>
示例:
```java
boolean isExist = ZtlManager.GetInstance().isExist("/sdcard/test.apk"); //isExist 为判断文件是否存在结果
```
## 计算GPIO值
函数:public int gpioStringToInt(String port)<br>
描述:计算指定 GPIO 值<br>
参数说明:port:GPIO口;返回值:GPIO值<br>
示例:
```java
int gpiovalue = ZtlManager.GetInstance.gpioStringToInt("GPIO7_A5"); //gpiovalue 为计算 GPIO7_A5 的值
```
## 设置GPIO输出值
方法1:<br>
函数:public void setGpioValue(String port, int value)<br>
描述:将对应的 GPIO 设置为输出模式,并设置输出电平<br>
备注:这只是个简易接口,为了更方便控制 GPIO 对象和提高执行效率,推荐使用 Gpio 类。<br>
参数说明:port:GPIO口,具体IO口号参考IO口对应列表;value:1:输出高电平;0:输出低电平<br>
示例:
```java
//设置 GPIO7_A5 为输出高电平
ZtlManager.GetInstance().setGpioValue("GPIO7_A5 ",1);
```
方法2:<br>
函数:public int setGpioValue(int type, boolean bIn, boolean bHigh)<br>
描述:设置IO口的方向并设置值<br>
备注:这只是个简易接口,为了更方便控制 GPIO 对象和提高执行效率,推荐使用 Gpio 类。<br>
参数说明:type:GPIO口,对应规格书中的编号,如1、2、3等;bIn:true:设置输入模式;false:设置输出模式;bHigh:true:设置高电平;false:设置低电平<br>
返回值说明:-1:IO口输入错误或IO口打开失败;-2:系统不支持该接口;1:设置成功<br>
注意:当第二个参数设置成true时(设置IO口为输入模式),第三个参数设置无效。<br>
示例:
```java
//设置规格书中IO口编号1为输出,并设置为高电平
ZtlManager.GetInstance().setGpioValue(1, false, true);
```
## 获取GPIO值
方法1:<br>
函数:public int getGpioValue(String port, String direction)<br>
描述:获取指定 GPIO 的值。<br>
参数说明:port:GPIO口,具体IO口号参考IO口对应列表;direction:in:输入;out:输出。返回值:GPIO的输出值<br>
示例:
```java
int value = ZtlManager.GetInstance().getGpioValue("GPIO7_A5", "out"); //value 为获取到的 GPIO 输出值
```
方法2:<br>
函数:public int getGpioValue(int type)<br>
描述:获取指定GPIO口的值。<br>
备注:这只是个简易接口,为了更方便控制 GPIO 对象和提高执行效率,推荐使用 Gpio 类。<br>
参数说明:type:GPIO口,对应规格书中的编号,如1、2、3等;<br>
返回值说明:-1:IO口输入错误或IO口打开失败;-2:系统不支持该接口;1:输入模式高电平;2:输入模式低电平;3:输出模式高电平;4:输出模式低电平<br>
示例:
```java
//设置规格书中IO口编号1为输出,并设置为高电平
int value = ZtlManager.GetInstance().getGpioValue(1); //value为获取GPIO编号1的值
```
## 设置GPIO方向
函数:public void setGpioDirection(String port, String direction)<br>
描述:设置 GPIO 的方向。<br>
参数说明:port:GPIO口,具体IO口号参考IO口对应列表;direction:in:输入;out:输出。<br>
示例:
```java
//设置 GPIO7_A5 为输入状态
ZtlManager.GetInstance().setGpioDirection("GPIO7_A5", "in");
```
## 获取GPIO方向
函数:public String getGpioDirection(String port)<br>
描述:获取 GPIO 的方向值。<br>
参数说明:port:GPIO口,具体IO口号参考IO口对应列表;返回值:in:输入;out:输出。<br>
示例:
```java
String direction = ZtlManager.GetInstance().getGpioDirection("GPIO7_A5");//direction 为 GPIO7_A5 的方向值
```
## 打开器件存储器
函数:public boolean openZtlI2C(String filePath, int chipID, int addrLen)<br>
描述:打开器件存储器<br>
参数说明:filePath:器件存储器节点名称,如:"/dev/i2c-1"<br>
chipID:写入的i2c器件地址,注意不要跟系统的起冲突,否则会导致系统加密校验失败起不来<br>
addrLen:写入的地址长度,比如RC16就是1位地址长度(支持读取8位地址,也就是你只能在read接口和write接口参数1里传入0-255),RC128就是2位地址长度.具体看器件文档)<br>
返回值:true:打开成功;false:打开失败<br>
备注:这只是个简易接口,如需提高执行效率,推荐使用ZtlI2C类。<br>
示例:
```java
boolean openI2C = ZtlManager.GetInstance().openZtlI2C("/dev/i2c-1", 0x30, 1);
//openI2C位打开返回的结果;"/dev/i2c-1"为器件节点名称;0x30为器件地址;1为写入地址位长度
```
## 铁电存储器专用写接口
函数:public void flashWrite(int addr, byte[]data, int nCount)<br>
描述:铁电存储器专用写接口,使用前需要先调用:openZtlI2C()接口<br>
参数说明:addr:写入的地址,如:0xa1、0xa2...等<br>
data:写入内容,如:0x11,0x22,0x33...等<br>
nCount:写入内容长度,如:1,代表读取存储器长度,需要和写入内容长度一致<br>
备注:这只是个简易接口,如需提高执行效率,推荐使用ZtlI2C类。<br>
示例:
```java
ZtlManager.GetInstance().flashWrite(0xa1, 0x11,1);//往0xa1地址写入0x11,长度为1的内容
```
## 铁电存储器专用读接口
函数:public byte[] flashRead(int addr, int nCount)<br>
描述:铁电存储器专用读接口,使用前需要先调用:openZtlI2C()接口<br>
参数说明:addr:读地址,地址长度为1时,请不要传入大于255的值,否则一切后果自负<br>
nCount:需要读取的内容长度<br>
备注:这只是个简易接口,如需提高执行效率,推荐使用ZtlI2C类。<br>
示例:
```java
byte[] bRead = ZtlManager.GetInstance().flashRead(0xa1, 12);//读取0xa1地址中的12位内容;bRead为读取到的内容
```
## 加密芯片专用写接口
函数:public void chipWrite(int cmd, byte[] data, int nCount)<br>
描述:加密芯片专用写接口,使用前需要先调用:openZtlI2C()接口<br>
参数说明:cmd:芯片中程序代码的命令码<br>
data:数据内容,如:0x11,0x22,0x33...等<br>
nCount:写入内容长度,如:1,代表读取存储器长度,需要和写入内容长度一致<br>
备注:这只是个简易接口,如需提高执行效率,推荐使用ZtlI2C类。<br>
示例:
```java
ZtlManager.GetInstance().chipWrite(0xb1, 0x11,1);//往0xb1地址写入0x11,长度为1的内容
```
## 加密芯片专用读接口
函数:public byte[] chipRead(int cmd, int ncount)<br>
描述:加密芯片专用读接口,如果调用写接口后需要马上读取,建议间隔时间为10ms或以上;使用前需要先调用:openZtlI2C()接口<br>
参数说明:cmd:需要读取的内容,如芯片中代码的命令码,根据命令码返回的数据,如果要直接读取(如上次调用写接口后需要直接获取返回),需要传入-1<br>
nCount:需要读取的内容长度<br>
备注:这只是个简易接口,如需提高执行效率,推荐使用ZtlI2C类。<br>
示例:
```java
byte[] bRead = ZtlManager.GetInstance().chipRead(0xb1, 12);//读取0xa1地址中的12位内容;bRead为读取到的内容
```
## 关闭器件存储器
函数:public void closeI2C()<br>
描述:关闭器件存储器<br>
备注:这只是个简易接口,如需提高执行效率,推荐使用ZtlI2C类。<br>
示例:
```java
ZtlManager.GetInstance().closeI2C()//关闭器件存储器
```
## 禁止卸载app
函数:public int setUninstallPackage(String packageS)<br>
描述:设置后,不可将app拖动至卸载框卸载。<br>
参数说明:-1:系统不支持;1:设置成功;-2:设置失败;-3:异常错误<br>
示例:
```java
int installok = ZtlManager.GetInstance().setUninstallPackage("com.ztl.test");//设置com.ztl.test禁止卸载,installok为返回参数
```
## 获取禁止卸载APP的包名
函数:public String getUninstallPackage()<br>
描述:获取setUninstallPackage()接口设置的不可卸载app的包名<br>
参数说明:返回值:禁止卸载app包名;1:系统不支持;error:异常错误<br>
示例:
```java
string uninstallpkg = ZtlManager.GetInstance().getUninstallPackage();//uninstallpkg为获取禁止卸载app的包名
```
## 获取ADC数值
函数:public String getADCValue()<br>
描述:获取ADC数值<br>
参数说明:返回值:获取到的ADC数值<br>
示例:
```java
string ADCValue = ZtlManager.GetInstance().getADCValue();//ADCValue为获取到的ADC数值
```
# 媒体
## 获取系统最大音量
函数:public int getSystemMaxVolume()<br>
描述:获取 Android 系统最大媒体音量值。<br>
参数说明:返回值:Android系统最大媒体音量<br>
示例:
```java
int maxVolume = ZtlManager.GetInstance().getSystemMaxVolume();//maxVolume 为获取到的 Android 系统最大媒体音量值
```
## 获取系统当前音量
函数:public int getSystemCurrenVolume()<br>
描述:获取 Android 系统当前媒体音量值<br>
参数说明:返回值:Android系统当前媒体音量<br>
示例:
```java
int currenVolume = ZtlManager.GetInstance().getSystemCurrenVolume();//currenVolume 为获取到的 Android 系统当前媒体音量值
```
## 增大音量
函数:public int setRaiseSystemVolume()<br>
描述:设置 Android 系统媒体音量值+1<br>
参数说明:返回值:0:设置成功;-1:设置失败。<br>
示例:
```java
//设置 Android 系统媒体音量值+1
ZtlManager.GetInstance().setRaiseSystemVolume();
```
## 降低音量
函数:public int setLowerSystemVolume()<br>
描述:设置 Android 系统媒体音量值-1<br>
参数说明:返回值:0:设置成功;-1:设置失败。<br>
示例:
```java
//设置 Android 系统媒体音量-1
ZtlManager.GetInstance().setLowerSystemVolume();
```
## 设置媒体音量值
函数:public int setSystemVolumeIndex(int index)<br>
描述:设置 Android 系统媒体音量值<br>
参数说明:index:设置Android系统媒体音量值。返回值:0:设置成功;-1:设置失败。<br>
示例:
```java
//设置 Android 系统媒体音量值为 10
ZtlManager.GetInstance().setSystemVolumeIndex(10);
```
## 设置指定音量的音量值
函数:public void setVolume(int streamType, int value)<br>
描述:设置 Android 系统指定音量的音量值<br>
参数说明:streamType:填入需要调整的音量,如:2:铃声音量 3:媒体音量 4:闹钟音量 value:设置Android系统铃声音量值。<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//设置 Android 系统铃声音量值为 5
ZtlManager.GetInstance().setVolume(2, 5);
```
## 获取指定音量的音量值
函数:public int getVolume(int streamType)<br>
描述:获取 Android 系统指定音量的音量值<br>
参数说明:streamType:填入需要调整的音量,如:2:铃声音量 3:媒体音量 4:闹钟音量<br>
示例:
```java
int value = ZtlManager.GetInstance().getVolume(2); //value为获取到的Android系统铃声音量
```
## 获取指定音量的最大音量值
函数:public int getMaxVolume(int streamType)<br>
描述:获取 Android 系统指定音量的最大音量值<br>
参数说明:streamType:填入需要调整的音量,如:2:铃声音量 3:媒体音量 4:闹钟音量<br>
示例:
```java
int maxValue = ZtlManager.GetInstance().getMaxVolume(2); //maxValue为获取到的Android系统铃声音量
```
## 设置相机方向
函数:public void setCameraOrientation(int orientation)<br>
描述:仅对 Android 系统相机 app 有效。<br>
参数说明:orientation:0:0度;90:相机方向顺时针旋转90度;180:相机方向顺时针旋转180度;270:相机方向顺时针旋转270度。<br>
示例:
```java
//设置 Android 系统相机方向顺时针旋转 90 度
ZtlManager.GetInstance().setCameraOrientation(90);
```
## 获取相机方向
函数:public int getCameraOrientation()<br>
描述:获取系统相机方向<br>
参数说明:返回值:Android系统相机方向。<br>
示例:
```java
int orientation = ZtlManager.GetInstance().getCameraOrientation();//orientation 为 Android 系统相机方向
```
## 判断相机是否镜像
函数:public boolean isCameraMirror()<br>
描述:判断 Android 系统相机是否镜像<br>
参数说明:返回值:true:镜像;false:非镜像。<br>
示例:
```java
boolean cameraIsMirror = ZtlManager.GetInstance().isCameraMirror();//cameraIsMirror 结果为 Android 系统相机是否镜像
```
## 设置相机是否镜像
函数:public void setCameraMirror(boolean bMisrror)<br>
描述:设置相机是否镜像<br>
参数说明:bMisrror:true:镜像;false:非镜像。<br>
示例:
```java
//设置 Android 系统相机为镜像
ZtlManager.GetInstance().setCameraMirror(true);
```
# 其他
## 打开性能监控小程序
函数:public void openMonitor()<br>
描述:打开性能监控,用于方便检查设备当前状态<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
示例:
```java
//打开性能监控
ZtlManager.GetInstance().openMonitor();
```
## 获取CPU可用频率
函数:public String[] getCPUFreq()<br>
描述:获取 Android 系统 CPU 可用频率<br>
备注:需系统固件支持。 验证方法见文末附注。<br>
参数说明:返回值:获取Android系统CPU可用频率。<br>
示例:
```java
String[] CPUFreq = ZtlManager.GetInstance().getCPUFreq();// CPUFreq 为CPU可用频率列表
```
## 设置CPU频率
函数:public void setCPUFreq(String cpuFreq)<br>
描述:设置 Android 系统 CPU 频率<br>
备注:必须是 getCPUFreq 返回的值其中一个。否则不起作用。设置过低可能会导致系统很卡。<br>
参数说明:cpuFreq:设置Android系统CPU频率。<br>
示例:
```java
//设置CPU频率为108000。
ZtlManager.GetInstance().setCPUFreq("1008000");
```
# 附注
## 需要验证系统是否支持的API验证方法
1:使用adb命令:adb shell pm path com.ztl.helper<br>
如果出现:package:/data/app/com.ztl.helper-1/base.apk,或其他路径,则系统支持。<br>
如果为空,请联系厂家技术支持。