Browse Source

1.4.0 optimize:
1、X5静默安装
2、支持EST-M20东信手持机
3、导航栏、通知栏控制,启动应用。

xwh 1 month ago
parent
commit
8565967666

+ 3 - 0
app/build.gradle

@@ -197,4 +197,7 @@ dependencies {
 
     implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.72"
 
+    //紫鹏X5——jar包
+    implementation files('libs\\YNHAPI-20230413.jar')
+
 }

BIN
app/libs/YNHAPI-20230413.jar


+ 1542 - 0
app/src/main/aidl/com/kte/interfacesettings/aidl/ITools.aidl

@@ -0,0 +1,1542 @@
+package com.kte.interfacesettings.aidl;
+import android.content.ComponentName;
+import android.graphics.Bitmap;
+import java.util.Map;
+/**
+ * @class ITools
+ * version Q10.0.1
+ * note::
+ * 接口服务action: <br>
+ *		com.kte.interfacesettings.aidl <br>
+ * 绑定服务:<br>
+ * 		Intent intent = new Intent("com.kte.interfacesettings.aidl"); <br>
+ *      intent.setPackage("com.kte.interfacesettings"); <br>
+ *		bindService(intent, mConnection, BIND_AUTO_CREATE); <br>
+ * 解绑服务:<br>
+ *		unbindService(mConnection);
+ */
+ 
+interface ITools {
+	/**
+	* No. 1
+	* 启用/禁用adb调试功能(在开发者模式里面有个USB debugging这个开关,
+	* 禁用了adb功能后,不会关闭已连接的adb连接,但是关闭后不能再次开启,
+	* 只有启用的时候才能正常打开和关闭)
+	 * @param enable
+	 * true 启用 ,false 禁用
+	 **/
+	void setAdbEnable(boolean enable);
+
+	/**
+	* No. 2
+	* 启用/禁用MTP数据传输功能(启用时USB可充电,可做数据传输,禁用时USB不进行数据传输)
+	* System Settings --> Connected devices --> USB,
+	* 禁用后,不能选择除了no data transfer的其他选项,启用后才所有选择项才可选
+	 * @param enable
+	 * true 启用 ,false 禁用
+	 **/
+	void setMtpEnable(boolean enable);
+
+	/**
+	 * No. 3
+	 * 启用/禁用Camera功能
+	 * @param enable
+	 * true 启用 ,false 禁用
+	 **/
+	void setCameraEnable(boolean enable);
+
+	/**
+	* No. 4
+	* 启用/禁用蓝牙功能
+	* System Settings --> Connected devices --> Pair new device,
+	* 禁用后开启不了蓝牙,下拉栏中的蓝牙快捷键中也开启不了蓝牙,
+	* 快速设置栏中的蓝牙快捷键会turning on的标志,稍等或者刷新会重新变成灰色。启用蓝牙功能后即可开启
+	 * @param enable
+	 * true 启用 ,false 禁用
+	 * 启用蓝牙时,lockStatus为false
+	 * 禁用蓝牙时, lockStatus锁定状态,true为锁定打开状态,false锁定关闭状态
+	 **/
+	void setBluetoothEnable(boolean enable);
+
+	/**
+	 * No. 5
+	 * 打开/关闭蓝牙
+	 * @param open
+	 * true 启用 ,false 禁用
+	 **/
+	void setBluetoothOpen(boolean open);
+
+	/**
+	* No. 6
+	* 打开静音,打开后,按音量键均不会出现音量调节视图,且播放其他有声内容,均不会出现声音,关闭静音即可恢复正常
+	 * @param open
+	 * true 打开 ,false 关闭
+	 **/
+	void setVolumeMuted(boolean open);
+    
+	/**
+	 * No. 7
+	 * 启用OTG T卡功能
+	 * @param enable
+	 * true 启用 ,false 禁用
+	 **/
+	void setSDOTGEnable(boolean enable);
+
+	/**
+	 * No. 8
+	 * 显示/隐藏导航栏上音量+虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setVolAddVisible(boolean visible);
+
+	/**
+	 * No. 9
+	* 显示/隐藏导航栏上截屏虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setScreenShotVisible(boolean visible);
+
+	/**
+	 * No. 10
+	 * 显示/隐藏导航栏上音量-虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setVolSubVisible(boolean visible);
+
+	/**
+	 * No. 11
+	 * 禁用/启用导航栏上HOME虚拟按键(如果有该虚拟按键)
+	 * @param enable
+	 * true 启用,false 禁用
+	 **/
+	void setHomeEnable(boolean enable);
+
+	/**
+	 * No. 12
+	 * 显示/隐藏导航栏上BACK虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setBackEnable(boolean enable);
+
+	/**
+	 * No. 13
+	 * 显示/隐藏导航栏上RECENT虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setRecentEnable(boolean enable);
+
+	/**
+	 * No. 14
+	* 禁用/启用Power键
+	* 禁用后,Power键无响应,不能关机和关闭或打开屏幕,但是与power键相关的快捷键有效,例如快速双击打开camera等
+	 * @param enable
+	 * true 启用,false 禁用
+	 * @param longEnable
+	 * true 启用长按 ,false 禁用长按
+	 **/
+	void setPowerKeyEnable(boolean enable,boolean longEnable);
+
+	/**
+	* 禁用/启用Power键
+	* 禁用后,Power键无响应,不能关机和关闭或打开屏幕,但是与power键相关的快捷键有效,例如快速双击打开camera等
+	 **/
+	void setLongPowerKeyEnable(boolean longEnable);
+
+	/**
+	 * No. 15
+	 * 启用/禁用导航栏上音量+虚拟按键(如果有该虚拟按键)
+	 * @param enable
+	 * true 启用,false 禁用
+	 **/
+	void setVolAddEnable(boolean enable);
+
+	/**
+	 * No. 16
+	 * 启用/禁用导航栏上音量-虚拟按键(如果有该虚拟按键)
+	 * @param enable
+	 * true 启用,false 禁用
+	 **/
+	void setVolSubEnable(boolean enable);
+
+	/**
+	 * No. 17
+	 * 显示/隐藏导航栏上Home虚拟按键(如果有该虚拟按键)
+	 * @param enable
+	 * true 显示,false 隐藏
+	 **/
+	void setHomeVisible(boolean visible);
+	
+	/**
+	 * No. 18
+	 * 显示/隐藏导航栏上Back虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setBackVisible(boolean visible);
+
+	/**
+	 * No. 19
+	 * 显示/隐藏导航栏上Recent虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setRecentVisible(boolean visible);
+	
+	/**
+	 * No. 20
+	 * 显示/隐藏导航栏上亮度-虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setScreenBrightnessSubVisible(boolean visible);
+		
+	/**
+	 * No. 21
+	 * 显示/隐藏导航栏上亮度+虚拟按键(如果有该虚拟按键)
+	 * @param visible
+	 * true 显示,false 隐藏
+	 **/
+	void setScreenBrightnessAddVisible(boolean visible);
+
+	/**
+	* No. 22
+	* 启用/禁用下拉面板
+	* @param enable
+	* true 启用,false 禁用
+	**/
+	void setStatusBarDropEnable(boolean enable);
+	
+	/**
+	* No. 23
+	* 显示/隐藏状态栏
+	* @param visible
+	* true 显示,false 隐藏
+	**/
+	void setStatusBarVisible(boolean visible);
+	
+	/**
+	* No. 24
+	* NavigationBar导航栏显示/隐藏
+	* @param show <br>
+	* true 显示,false 隐藏,默认显示
+	**/
+	void setNavigationBarShow(boolean show);
+
+	/**
+	* No. 25
+	* true/启用,false/禁用通知功能
+	* 启用之后的通知将显示(包括图标、弹窗等),启用之前已有的通知不显示
+	* 禁用之后的通知将不再显示(包括图标、弹窗等),禁用之前已有的通知不消失
+	**/
+	void setNotificationEnable(boolean enable);
+	
+	/**
+	* No. 26
+	* 禁用/启用wifi
+	* 禁用wifi后,且会关闭wifi,System Settings --> Network&internet --> WI-Fi,点击进去后显示Action not allowed。
+	* 启用后,会开启wifi,可以正常使用
+	* @param
+	* true 启用,false 禁用
+	**/
+	void setWifiAdvanceEnable(boolean enable);
+	
+	/**
+	* No. 27
+	* 打开/关闭adb调试
+	* @param on
+	* true 打开,false 关闭
+	**/
+	void turnOnAdb(boolean on);
+
+	/**
+	* No. 28
+	* 打开MTP数据传输
+	* @param on
+	* true 为 打开,false 关闭
+	**/
+	void turnOnMtp(boolean on);
+
+    /**
+	 * No. 28
+     * 启用/禁用触屏
+     * @param enable <br>
+     * true 启用,false 禁用,默认启用
+     **/
+    void enableTp(boolean enable);
+    
+    /**
+	* No. 31
+     * 设置应用黑白名单模式,不会清除黑白名单数据
+     * @param pattern 
+     * 0:普通模式(黑白名单都不生效),1:黑名单模式,2:白名单模式
+     **/
+    void setAppRestriction(int pattern);
+    
+	/**
+	* No. 32
+	 * 获取apk安装名单模式
+	 * @return
+	 * int 0:普通模式(黑白名单都不生效),1:黑名单模式,2:白名单模式
+	 **/
+	int getAppRestrictionMode();
+
+	/**
+	* No. 33
+	* 设置apk安装白名单
+	* 在设置前需要先调用setAppRestriction用来设置apk安装模式
+	* 当设置了黑白名单模式,但对应的黑白名单值为空时,等同于设置为0(普通模式,黑白名单都不生效)
+	* @param packageNameList
+	* 包名列表
+	**/
+	void addAppInstallWhiteList(in List<String> packageNameList);
+
+	/**
+	* No. 34
+	* 删除安装白名单列表
+	* @param packageNameList
+	* 包名列表
+	**/
+	void delAppInstallWhiteList(in List<String> packageNameList);
+
+	/**
+	* No. 35
+	* 清空安装白名单列表
+	**/
+	void clearAppInstallWhiteList();
+
+	/**
+	* No. 36
+	* 获取安装白名单列表
+	* @return List<String>
+	* 返回List列表
+	**/
+	List<String> getAppInstallWhiteList();
+
+	/**
+	* No. 37
+	* 设置apk安装黑名单
+	* 在设置前需要先调用setAppRestriction用来设置apk安装模式
+	* 当设置了黑白名单模式,但对应的黑白名单值为空时,等同于设置为0(普通模式,黑白名单都不生效)
+	*  @param packageNameList
+	* 包名列表
+	**/
+	void addAppInstallBlackList(in List<String> packageNameList);
+
+	/**
+	* No. 38
+	* 删除安装黑名单列表
+	* @param packageNameList
+	* 包名列表
+	**/
+	void delAppInstallBlackList(in List<String> packageNameList);
+
+	/**
+	* No. 39
+	* 清空安装黑名单列表
+	**/
+	void clearAppInstallBlackList();
+
+	/**
+	* No. 40
+	* 获取安装黑名单列表
+	* @return List<String>
+	* 返回List列表
+	**/
+	List<String> getAppInstallBlackList();
+	
+	/**
+	* No. 41
+	* 设置卸载apk黑名单列表
+	* @param packageNameList
+	* 包名列表
+	**/
+	void addAppUninstallBlackList(in List<String> packageName);
+
+	/**
+	* No. 42
+	* 删除卸载apk黑名单列表
+	* @param packageNameList
+	* 包名列表
+	**/
+	void delAppUninstallBlackList(in List<String> packageName);
+
+	/**
+	* No. 43
+	* 清空卸载黑名单列表
+	**/
+	void clearAppUninstallBlackList();
+
+	/**
+	* No. 44
+	* 获取卸载apk黑名单列表
+	* @return List<String>
+	* 返回List列表
+	**/
+	List<String> getAppUnInstallBlackList();
+	
+	/**
+	* No. 45
+	* 静默安装apk功能
+	* @param apkPath
+	* apk文件路径
+	* @param autoLaunch
+	* 是否自动启动
+	**/
+	void silentInstall(String path,boolean autoLa);
+
+	/**
+	* No. 46
+	* 静默卸载apk功能
+	* @param pkgName
+	* apk的包名
+	**/
+	void silentUninstall(String pkgName);
+
+	/**
+	* No. 47
+	* 禁用/启用apk
+	* @param enable
+	* true 启用,false 禁用
+	* @param packageNameList
+	* apk的包名列表
+	**/
+	void setAppEnable(boolean enable,in List<String> packageNameList);
+	
+	/**
+	* No. 48
+	* 获取禁用APK列表
+	* @return List<String>
+	*   返回的是调用setAppDisable后生成的列表
+	**/
+	List<String> getAppDisable();
+	
+	/**
+	* No. 49
+	* 清空禁用APK
+	**/
+	void clearAppDisable();
+
+	/**
+	* No. 50
+	 * 获取所有被禁用的apk列表
+	 * 返回List列表包含的是调用setAppEnable后禁用的列表和系统本身禁用的apk列表
+	 **/
+	List<String> getForbidenAppList();
+
+	/**
+	* No. 51
+	 * 获取当前所有正在运行的第三方应用进程接口
+	 * @return List<String>
+	 * 返回List列表
+	 **/
+	List<String> getThirdAppPkgList();
+
+	/**
+	* No. 52
+	 * 停止apk运行
+	 * @param pkgName
+	 * apk的包名
+	* 停止apk运行后获取应用进程(getThirdAppPkgList)则获取不到此包名
+	 **/
+	void forceStopApp(String pkgName);
+
+	/**
+	* No. 53
+	 * 显隐系统设置项
+	 * @param item
+	 * <br>
+	 * wlan:1
+     * 显示:4
+     * 应用和通知:5
+     * 声音:6
+     * 存储:7
+     * 电池:8
+     * 帐号:10
+     * 位置信息:11
+     * 重置选项:14
+     * 无障碍:16
+     * 关于平板电脑:19
+     * 快霸:20
+     * 飞行模式:21
+     * 移动网络:22
+     * 热点和网络共享:23
+     * VPN:24
+     * 网络和互联网 38
+     * 已连接的设备 39
+	 * <br>
+	 * @param visible
+	 * true 显示该item,false隐藏该item
+	 */
+	void setSettingOptionGoneorVisible(int item ,boolean visible);
+
+	/**
+	* No. 54
+	 * 设置默认Launcher
+	 * @param packageName
+	 * apk的包名
+	 * @param className
+	 * apk的组件类名
+	 **/
+	void setDefaultLauncher(in ComponentName cmpName);
+
+	/**
+	* No. 55
+	 * 设置默认浏览器
+	 * @param packageName
+	 * apk的包名
+	 **/
+	void setDefaultBrowser(String packageName);
+
+	/**
+	* No. 56
+	 * 清除默认Launcher
+	 **/
+	void clearDefaultLauncher();
+
+	/**
+	 * No. 55
+	 * 修改系统设置权限
+	 * @param packageName
+     * apk的包名
+     * @param allow
+     * true 打开,false 关闭
+	 **/
+	void allowAppModifySystemSettingsPermission(String packageName, boolean allow);
+
+	/**
+	 * No. 56
+	 * 使用情况访问权限/允许app查看应用使用情况
+	 * @param packageName
+     * apk的包名
+     * @param allow
+     * true 打开,false 关闭
+	 **/
+	void allowGetUsageStats(String packageName, boolean allow);
+
+	/**
+	 * No. 57
+	 * 允许app具有悬浮窗权限(显示在其他应用的上层)
+	 * @param packageName
+     * apk的包名
+     * @param allow
+     * true 打开,false 关闭
+	 **/
+	void allowDrawOverlays(String packageName, boolean allow);
+
+	/**
+	 * No. 58
+	 * 设置 设备管理器/激活设备管理器
+	 * @param packageName
+	 * apk的包名
+	 * @param className
+	 * 设备管理器相应类名(绑定android.permission.BIND_DEVICE_ADMIN权限的receiver)
+	 **/
+ 	void setActiveAdmin(String packageName,String className);
+
+	/**
+	 * No. 59
+	 * 打开/关闭应用的未知来源权限
+	 * @param pkgName
+     * apk的包名
+	 * @param allow
+	 * true 打开 false 关闭
+	 **/
+ 	void setInstallNonMarketApp(String pkgName,boolean allow);
+
+	/**
+	 * No. 60
+	 * 全局网络控制功能
+	 * @param allow
+	 * true 允许上网 false 禁用上网
+	 **/
+	void setEnableGlobalNetwork(boolean allow);
+
+	/**
+	 * No. 61
+	 * 设置网址白名单,调用前需要先通过setNetRule设置网络规则来标明当前是黑名单还是白名单
+	 * @param 网址、Ip、IP的正则表达式
+     * 网址、(网址的正则表达式)正则或者IP地址,null 为清空列表
+     * 注意事项:传入的网址(不能携带协议头,比如URL(https://www.baidu.com),请传入www.baidu.com,传入//后的那一部分)
+     * 注意事项:正则表达式:传入的正则表达式,也只需要就//后的那一部分书写正则表达式,不然匹配不上,例如百度的网址的正则表达式( ^.*(baidu).*$ )
+     * 注意事项:IP地址,通过获得网址的url获取ip地址,设置好ip地址,再去测试网址是否可连接,一般是不能生效的,只有你传入的ip地址,再通过ip地址去连接才是生效的、
+     * 注意事项:浏览器有缓存,已经访问过的页面,再去设置网络黑白名单是不生效的,需要清除掉缓存,且保证浏览中没有打开需要设置的网页,才能生效
+	 * @param netType
+	 * 网络类型, 1 为 wifi,6为mobie数据网络,7为 wifi+mobie
+	 * @param add
+	 * true 为增加 urlOrIp,false为删除 urlOrIp
+	 * @return boolean
+	 * true 操作成功,false失败
+	 **/
+	boolean setNetworkWhiteList(String urlOrIp,int netType,boolean add);
+
+	/**
+	 * No. 62
+	 * 获取网址白名单列表
+	 * @return List<String>
+	 * 网址白名单列表
+	 **/
+	List<String> getWebWhiteList();
+ 
+	/**
+	 * No. 63
+	 * 设置网址黑名单,调用前需要先通过setNetRule设置网络规则来标明当前是黑名单还是白名单
+	 * @param 网址、Ip、IP的正则表达式
+     * 网址、(网址的正则表达式)正则或者IP地址,null 为清空列表
+     * 注意事项:传入的网址(不能携带协议头,比如URL(https://www.baidu.com),请传入www.baidu.com,传入//后的那一部分)
+     * 注意事项:正则表达式:传入的正则表达式,也只需要就//后的那一部分书写正则表达式,不然匹配不上,例如百度的网址的正则表达式( ^.*(baidu).*$ )
+     * 注意事项:IP地址,通过获得网址的url获取ip地址,设置好ip地址,再去测试网址是否可连接,一般是不能生效的,只有你传入的ip地址,再通过ip地址去连接才是生效的、
+     * 注意事项:浏览器有缓存,已经访问过的页面,再去设置网络黑白名单是不生效的,需要清除掉缓存,且保证浏览中没有打开需要设置的网页,才能生效
+	 * @param netType
+	 * 网络类型, 1 为 wifi,6为mobie数据网络,7为 wifi+mobie
+	 * @param add
+	 * true 为增加 urlOrIp,false为删除 urlOrIp
+	 * @return boolean
+	 * true 操作成功,false失败
+	 **/
+	boolean setNetworkBlackList(String urlOrIp,int netType,boolean add);
+
+	/**
+	 * No. 64
+	 * 获取网址黑名单列表
+	 * @return List<String>
+	 * 网址白名单列表
+	 **/
+	List<String> getWebBlackList();
+
+	/**
+	 * No. 65
+	 * 设置apk上网白名单,调用前需要先通过setNetRule设置网络规则来标明当前是黑名单还是白名单
+	 * @param pkgName
+	 * apk包名,	null 为清空列表
+	 * @param netType
+	 * 网络类型, 1 为 wifi,6为mobie数据网络,7为 wifi+mobie
+	 * @param add
+	 * true 为增加 pkgName,false为删除 pkgName
+	 * @return boolean
+	 * true 操作成功,false失败
+	 **/
+	boolean setAppNetWhiteList(String pkgName,int netType,boolean add);
+
+	/**
+	 * No. 66
+	 * 获取 apk上网白名单
+	 * @return List<String>
+	 * 包名列表
+	 **/
+	List<String> getAppNetWhiteList();
+
+	/**
+	 * No. 67
+	 * 设置apk上网黑名单,调用前需要先通过setNetRule设置网络规则来标明当前是黑名单还是白名单
+	 * @param pkgName
+	 * apk包名,	null 为清空列表
+	 * @param netType
+	 * 网络类型, 1 为 wifi,6为mobie数据网络,7为 wifi+mobie
+	 * @param add
+	 * true 增加 pkgName,false 删除 pkgName
+	 * @return boolean
+	 * true 操作成功,false失败
+	 **/
+	boolean setAppNetBlackList(String pkgName, int netType,boolean add);
+
+	/**
+	 * No. 68
+	 * 获取apk上网黑名单
+	 * @return List<String>
+	 * 黑名单包名列表
+	 **/
+	List<String> getAppNetBlackList();
+
+	/**
+	 * No. 69
+	 * 获取硬件MAC地址
+	 * @return String
+	 * 返回 MAC
+	 **/
+	String getMACaddress();
+
+	/**
+	 * No. 70
+	 * 设置系统时间
+	 * @param sec
+	 * 以秒为单位
+	 **/
+	void setDeviceDate(long sec);
+
+	/**
+	 * No. 72
+	 * 静默截图功能(截屏)
+	 * @param savePath
+	 * 截图保存路径,返回截图格式为png格式
+	 * @return Bitmap
+	 * 如果 savePath 为有效路径,返回值 null,savePath 为null,返回 有效Bitmap 位图。
+	 **/
+	Bitmap captureScreen(String savePath);
+
+	/**
+	 * No. 73
+	 * 关机功能
+	 **/
+	void shutdownDevice();
+
+	/**
+	 * No. 74
+	 * 重启功能
+	 **/
+	void rebootDevice();
+
+	/**
+	 * No. 75
+	 * 睡眠/唤醒功能(熄屏/亮屏)
+	 * @param on
+	 * true为唤醒,false为睡眠
+	 **/
+	void lockNow(boolean on);
+
+	/**
+	 * No. 76
+	 * 保活 应用 设置
+	 * @param packageNmae
+	 * null 为清空全部
+	 * @param add
+	 * true 为 增加该package,false 为清除该package
+	 **/
+	void setPersistentApp(String packageNmae,boolean add);
+			
+	/**
+	 * No. 77
+	 * 获取保活app列表
+	 **/
+	List<String> getPersistentApp();
+	
+	/**
+	 * No. 78
+     * 清除最近任务..
+     **/
+    void clearRecentTask();
+    	
+	/**
+	 * No. 79
+	 * 恢复出厂设置
+	 **/
+	void wipeData();
+
+	/**
+	 * No. 80
+	 * 禁止/允许恢复出厂模式
+	 * @param enable <br>
+	 * true 禁止,false 允许,默认允许
+	 **/
+	void setFactoryResetDisabled(boolean disable);
+
+    /**
+	 * No. 81
+     * 设置默认输入法
+     * @param ime
+     * 输入法id(包名/android.permission.BIND_INPUT_METHOD服务对应的类名)
+     * 比如搜狗输入法传com.sohu.inputmethod.sogou/.SogouIME
+     * 返回true标识设置输入法成功,返回false标识设置输入法不成功(比如未安装指定的输入法软件则设置不了)
+     **/
+    boolean setDefaultInputMethod(String ime);
+
+    /**
+	 * No. 82
+     * 添加wifi到白名单(黑白名单不要同时设置,白名单优先于黑名单)
+	 * 白名单针对的是首次连接前未保存的WIFI,若WIFI已保存则无效
+     * @param ssids 添加到白名单中的SSID列表
+     **/
+    void addSSIDToWhiteList(in List<String>ssids);
+
+	/**
+	 * No. 83
+	 * 添加wifi到黑名单(黑白名单不要同时设置,白名单优先于黑名单)
+	 **/
+    void addSSIDToBlackList(in List<String> ssids);
+
+    /**
+	 * No. 84
+     * WIFI白名单中删除列表
+     * @param 正常传入需要删除的SSID列表 ; 清空白名单,则传入null
+     **/
+    void removeSSIDFromWhiteList(in List<String>ssids);
+    
+    /**
+	 * No. 85
+     * wifi黑名单中删除指定SSID
+     * @param ssids
+     * 正常传入需要删除的SSID列表,清空整个黑名单,则传入null
+     **/
+    void removeSSIDFromBlackList(in List<String> ssids);
+
+    /**
+	 * No. 86
+	 * 断开指定的ssid网络连接 <br>
+	 * 删除后恢复到从来没有连接过此WiFi的状态,并非是从wifi列表中删除该项
+	 * @param ssids
+	 * 指定的ssid名称
+	 **/
+	void removeWifiBySsid(String ssids);
+
+    /**
+	 * No. 87
+     * 获取WIFI白名单列表
+     * */
+    List<String> getSSIDWhiteList();	
+
+	/**
+	 * No. 88
+	 * 获取wifi黑名单
+	 **/
+    List<String> getSSIDBlackList();
+
+    /**
+	 * No. 89
+	 * 禁用/启用短信功能 <br>
+	 * @param disable
+	 * true 禁用;false 启用
+	 */
+    void setMmsSendDisabled(boolean disable);
+
+    /**
+	 * No. 90
+	 * 禁用/启用打电话功能 <br>
+	 * @param disable
+	 * true 禁用;false 启用
+	 **/
+    void setVoiceOutgoingDisable(boolean disable);
+
+    /**
+	 * No. 91
+	 * 禁用/启用接电话功能 <br>
+	 * @param disable
+	 * true 禁用;false 启用
+	 **/
+    void setVoiceIncomingDisabled(boolean disable);
+ 
+	/**
+	 * No. 92
+	 * 切换网络规则 <br>
+	 * 白名单规则:优先app白名单再到app黑名单再到网络url白名单,最后不在名单者无法使用网络 <br>
+	 * 黑名单规则:优先app黑名单再到网络url黑名单,最后不在名单的不限制网络
+	 * @param rule
+	 * 0 为不启用规则,1 为使用白名单规则,2为黑名单规则,默认白名单规则 <br>
+	 **/
+	void setNetRule(int rule);
+
+    /**
+	 * No. 93
+     * 设置默认播放器
+     * @param packageName
+     * 播放器包名
+     * @param className
+     * 播放器类名,类名需满足以下条件:
+     * <action android:name="android.intent.action.VIEW"/>
+     * <category android:name="android.intent.category.DEFAULT"/>
+     * <data android:mimeType="video/*"
+     * e.g.设置爱奇艺播放器参数为:("com.qiyi.video","org.iqiyi.video.activity.PlayerActivity");
+     * @return
+     * true 设置播放器成功; false 设置播放器不成功(比如未安装指定的播放器软件则设置不了)
+     **/
+    boolean setDefaultVideoPlayer(String packageName,String className);
+
+    /**
+	 * No. 94
+     * 授予应用全部权限
+     * @param pkgName
+     * 已经安装的应用包名
+     **/	
+    void setAppPermission(String pkgName);
+
+    /**
+	 * No. 95
+     * 设置背光亮度(屏幕亮度)
+     * @param brightness
+     * The brightness value from 0 to 255.
+     **/
+    void setBackLightBrightness(int brightness);
+        
+    /**
+	 * No. 96
+     * 禁用/启用 飞行模式
+     * @param on true 禁用/false 启用
+     **/
+    void setAirplaneDisable(boolean disable);
+ 
+    /**
+	 * No. 97
+	 * 设置电量优化白名单/忽略耗电优化,设置-应用和通知-高级-特殊应用权限-电池优化中查看
+	 * @param pkgName
+	 * apk包名
+	 * @param add
+	 * true 加入白名单(优化),false从白名单删除(不优化)
+	 **/
+	void ignoringBatteryOptimizations(String pkgName,boolean add);
+
+	/**
+	 * No. 98
+	 * 获取电池未优化的App名单
+	 **/
+	List<String> getUnOptimizePowerList();
+	
+	/**
+	 * No. 99
+	 * 清除应用数据
+	 * @param packageName
+	 * 		apk包名
+	 **/
+	void clearAppData(String packageName);
+	
+	/**
+	 * No. 100
+     * 设置联系人黑白名单模式 1:黑名单模式,2:白名单模式
+     **/
+	void setContactsRestriction(int pattern);
+	
+	/**
+	 * No. 101
+	 * 设置联系人黑白名单 
+	 * @param pattern 2 白名单 1黑名单 0:普通模式(黑白名单都不生效)	
+	 * @param numbers 电话号码
+	 * @param inOut in-1 2-out 0-all
+	 * @param phoneSms phone-1 sms-2 0-all
+	 **/
+	void addMdmNumberList(int pattern,in List<String> numbers,int inOut,int phoneSms);
+    
+    /**
+	 * No. 102
+	 * 清除对应名单内的指定电话号码数据
+	 * @param pattern 2 白名单 1黑名单 0:普通模式(黑白名单都不生效)	
+	 * @param numbers 电话号码
+	 * @param inOut in-1 2-out 0-all
+	 * @param phoneSms phone-1 sms-2 0-all
+	 **/
+    void removeMdmNumberList(int pattern,in List<String> numbers,int inOut,int phoneSms);
+    
+    /**
+	 * No. 103
+	 * 清除黑白名单内数据
+	 * @param pattern 2 白名单 1黑名单 0:删除所有
+	 **/
+    void removeAllMdmNumber(int pattern);
+    
+    /**
+	 * No. 104
+	 * 是否是屏蔽的号码
+	 **/
+    boolean isBlockNumber(String number,int inOut,int phoneSms);
+    
+    /**
+	 * No. 105
+     * 获取root状态
+     * true 有root权限,false 无root权限
+     **/
+    boolean isRooted();
+
+    /**
+	 * No. 106
+     * 设置锁屏壁纸
+     * @param filePath 壁纸存放路径
+     **/
+    void setLockWallPaper(String filePath);
+
+    /**
+	 * No. 107
+     * 打开/关闭移动数据流量开关
+     * @param on
+     * true 打开,false 关闭
+     **/
+    void setMobileDataOn(boolean on);
+
+    /**
+	 * No. 108
+     * 获取移动数据流量开关
+     * @return
+     * true 打开,false 关闭
+     **/
+    boolean getMobileDataState();
+    
+    /**
+	 * No. 109
+     * 打开/关闭GPS开关
+     * @param enable 
+     * true 打开/false 关闭
+     **/
+    void turnOnGPS(boolean enable);
+
+    /**
+	 * No. 110
+     * GPS是否打开
+     * true 打开/false 关闭
+     **/
+    boolean isGPSTurnOn();
+	
+    /**
+	 * No. 111
+     * 启用/禁用系统截图功能(控制的是通过截图按钮截图,不控制静默截图接口captureScreen)
+     * @param enable
+     * true 启用,false 禁用;默认关闭
+     **/
+    void setScreenCaptureDisabled(boolean enable);
+
+    /**
+	 * No. 112
+     * 安全模式的禁用与启用
+     * @param true 启用;false 禁用
+     **/
+    void setSafeModeEnableState(boolean state);
+
+    /**
+	 * No. 113
+     * 获取安全模式状态
+     * true 启用;false 禁用
+     **/
+    boolean getSafeModeEnableState();
+
+    /**
+	 * No. 114
+     * 获取设置item状态
+     * true 显示;false 隐藏
+     **/
+    boolean getSettingOptionHideOrVisibleState(int item);
+    
+
+	/**
+	 * No. 115
+	 * 设置网络控制规则
+	 * @param pkg
+	 * apk包名
+	 * @param url 网址、(网址的正则表达式)正则或者IP地址
+     * 注意事项:传入的网址(不能携带协议头,比如URL(https://www.baidu.com),请传入www.baidu.com,传入//后的那一部分)
+     * 注意事项:正则表达式:传入的正则表达式,也只需要就//后的那一部分书写正则表达式,不然匹配不上,例如百度的网址的正则表达式( ^.*(baidu).*$ )
+     * 注意事项:IP地址,通过获得网址的url获取ip地址,设置好ip地址,再去测试网址是否可连接,一般是不能生效的,只有你传入的ip地址,再通过ip地址去连接才是生效的、
+     * 注意事项:浏览器有缓存,已经访问过的页面,再去设置网络黑白名单是不生效的,需要清除掉缓存,且保证浏览中没有打开需要设置的网页,才能生效
+	 * @param netType
+	 * 网络类型, 1 为 wifi,6为mobie数据网络,7为 wifi+mobie
+	 * @param white
+	 * true 为白名单,false为黑名单
+	 * @param add
+	 * true 为增加 ,false为删除 
+	 **/
+    void setPkgOrUrlRules(String pkg, String url, int networkType, boolean white, boolean add);
+
+    /**
+	 * No. 116
+     * 打开/关闭护眼模式(夜间模式)
+     * @param state
+	 * true 关闭;false 打开;默认是关闭状态;
+     **/
+    void setProtectEyeModeClosed(boolean state);
+
+    /**
+	 * No. 117
+     * 获取护眼模式状态(夜间模式)
+     * @return state
+	 * true 打开;false 关闭;
+     **/
+    boolean getProtectEyeMode();
+
+    /**
+	 * No. 118
+     * 打开/关闭阅读模式(黑白屏)
+     * @param state
+	 * true 关闭;false 打开;默认是关闭状态;
+     **/
+    void setReaderModeClosed(boolean state);
+
+    /**
+	 * No. 119
+     * 获取阅读模式(黑白屏)
+     * @return state
+	 * true 打开;false 关闭;
+    **/
+    boolean getReaderMode();
+
+    /**
+	 * No. 120
+     * 显示隐藏下拉状态栏图标
+     * @param item
+     * wlan:0
+     * bluetooth:1
+     * do not disturb: 2
+     * flashlight:3
+     * auto rotate:4
+     * battery saver:5
+     * sim card :6
+     * airplanee mode:7
+     * cast:8
+     * @param visible
+     * true 显示该item,false隐藏该item
+     */
+    void showNotificationItems(int item, boolean visible);
+
+    /**
+	 * No. 121
+	 * 设置辅助功能
+	 * @param cmpNameList
+	 * 打开绑定android.permission.BIND_ACCESSIBILITY_SERVICE的ComponentName,如果关闭所有,则传null
+	 **/
+    void setAccessibility(in List<ComponentName> cmpNameList);
+
+    /**
+	 * No. 122
+	 * 关闭当前正在响铃的闹钟
+	 **/
+    void stopCurrentAlarm();
+
+    /**
+	 * No. 123
+     * 设置关机闹钟
+     * @param mEnabled    
+     * 是否设置关机闹钟 true为设置 false为取消
+     * @param mHour       
+     * 关机闹钟的小时 0~23
+     * @param mMinutes    
+     * 关机闹钟的分钟 0~59
+     * @param mDaysOfWeek int array {1,1,1,1,1,1,1}
+     * 全 0 为单次闹钟
+     * 全 1 为每天周期
+     * 一周七天,从周一到周天,对应的1是当天循环,0为当天不循环
+     * @param time        
+     * 指定具体日期的毫秒值(指定时间闹钟此值不能为0,循环闹钟改值可为0)
+     **/
+    void setShutdownAlert(boolean mEnabled, int mHour, int mMinutes, in int[]mDaysOfWeek, long time);
+
+    /**
+	 * No. 124
+     * 设置开机闹钟
+     * @param mEnabled    
+     * 是否设置开机闹钟 true为设置 false为取消
+     * @param mHour       
+     * 开机闹钟的小时 0~23
+     * @param mMinutes    
+     * 开机闹钟的分钟 0~59
+     * @param mDaysOfWeek int array {1,1,1,1,1,1,1}
+     * 全 0 为单次闹钟
+     * 全 1 为每天周期
+     * 一周七天,从周一到周天,对应的1是当天循环,0为当天不循环
+     * @param time        
+     * 指定具体日期的毫秒值(指定时间闹钟此值不能为0,循环闹钟改值可为0)
+     **/
+    void setBootupAlert(boolean mEnabled, int mHour, int mMinutes, in int[]mDaysOfWeek, long time);
+    
+    /**
+	 * No. 125
+	 * 启用/禁用系统自动进入休眠
+	 * @param enable
+	 * true 启用,false 禁用
+	 **/
+	void setAutoDormancyEnable(boolean enable);
+
+    /**
+    * No. 131
+    * usb是否开启调试功能
+    * 返回值为false为未开启,true为开启
+    */
+	boolean adbState();
+	
+    /**
+	* No. 132
+        * 读取已安装的应用程序列表
+        * 返回值为List中为返回的应用程序列表
+	*/
+	List<String> getInstalledPackages();
+
+    /**
+	* No. 133
+	* 禁用/启用GPS,禁用后,会关闭GPS,同时在设置->Location中,开关虽然能拨动,但是并不能开启和关闭GPS
+	* 启用后,会开启GPS,能够正常使用
+	* @param enable
+	* true 启用/false 禁用
+	**/
+	void setGPSEnabled(boolean enable);
+
+    /**
+	* No. 134
+	* 禁用/启用短信
+	* @param enable
+	* true 启用/false 禁用
+	**/
+	void setMessageEnabled(boolean enable);
+
+    /**
+	* No. 135
+	* 重复发送短信
+    * @param targetNumber 发送短信的目标电话号码
+	* @param times 发送短信的次数
+	* @param text 发送短信的内容
+	**/
+	void sendMessage(String targetNumber, String text);
+
+    /**
+	* No. 136
+	* 设置平板只能识别特定的电话卡,在一个都没有设置的情况下,不会禁用任何sim卡,且最多只能设置3个
+	* 每次的设置都会覆盖上次的设置,而不是在上次的基础上加
+	* 如果设置的正好为在机器中的卡,需要重启,或者重新插拔才会生效,如果设置的sim卡不在该机器中,那么插入卡即可生效。
+	* @param numberList sim卡的序列号
+	**/
+	void identifySpecificSimCard(in List<String> numberList);
+
+    /**
+	* No. 137
+	* 清除所有的特定的电话卡,
+	**/
+	void clearSpecificSimCard();
+
+    /**
+	* No. 138
+	* 获取所有设置的特定的电话卡
+	**/
+	List<String> getAllSpecificSimCard();
+
+    /**
+	* No. 139
+	* 删除其中某些设置的特定的电话卡
+	**/
+	void removeSpecificSimCard(in List<String> simSerialNumberList);
+
+    /**
+	* No. 140
+	* 获得sim卡的序列号,获取的是,正在机器中的这张卡的序列号
+	* @return String sim卡的序列号
+	**/
+	String getSimSerialNumber();
+
+    /**
+	* No. 141
+	* @param enable 设置整个sim卡模块不能使用,enable为true表示可用,即为正常状态,enable为false表示sim卡模块都不能使用
+	**/
+	void setAllSimCardEnable(boolean enable);
+
+    /**
+	* No. 142 设置待机时间
+	* @param time 传入的是int值,单位为毫秒,1秒等于1000毫秒
+	* 最大传入值为Integer.MAX_VALUE,息屏的最短时间为13s.设置更短的时间也要13s才能息屏
+	* 如需立刻息屏,请调用lockNow(boolean on)
+	**/
+	void setStandbyTime(int time);
+
+    /**
+	* No. 143 设置锁屏密码
+	* @param password 传入的string,必须为3个以上的长度才能生效,传入空或者空字符串会直接返回。
+	* 只支持在没有设置密码、设置锁屏密码、滑动解锁等方式下才能生效,如果设备此时在pin解锁、手势解锁等方式下,该设置不能生效。
+	**/
+	void setLockScreenPassword(String password);
+
+	/**
+	 * No. 71
+	 * 强制清除密码锁屏方式,重置为滑动锁屏方式。
+	 */
+	void clearLockScreen();	
+
+	/**
+     * No. 144 获取设备宽度(px)
+     * 
+    **/
+    int getDeviceWidth();
+ 
+    /**
+     * No. 145 获取设备高度(px)
+    **/
+    int getDeviceHeight();
+ 
+    /**
+     * No. 146 获取设备的唯一标识, 需要 “android.permission.READ_Phone_STATE”权限
+    **/
+    String getIMEI();
+ 
+    /**
+     * 获取厂商名
+     * **/
+    String getDeviceManufacturer();
+ 
+    /**
+     * 获取产品名
+     * **/
+    String getDeviceProduct();
+ 
+    /**
+     * 获取手机品牌
+    **/
+    String getDeviceBrand();
+ 
+    /**
+     * 获取手机型号
+    **/
+    String getDeviceModel();
+ 
+    /**
+     * 获取手机主板名
+    **/
+    String getDeviceBoard();
+ 
+    /**
+     * 设备名
+     * **/
+    String getDeviceDevice();
+ 
+    /**
+     * 
+     * 
+     * fingerprit 信息
+     * **/
+    String getDeviceFubgerprint();
+ 
+    /**
+     * 硬件名
+     * 
+     * **/
+    String getDeviceHardware();
+ 
+    /**
+     * 主机
+     * 
+     * **/
+    String getDeviceHost();
+ 
+    /**
+     * 
+     * 显示ID
+     * **/
+    String getDeviceDisplay();
+ 
+    /**
+     * ID
+     * 
+     * **/
+    String getDeviceId();
+ 
+    /**
+     * 获取手机用户名
+     * 
+     * **/
+    String getDeviceUser();
+ 
+    /**
+     * 获取手机 硬件序列号
+     * **/
+    String getDeviceSerial();
+ 
+    /**
+     * 获取手机Android 系统SDK
+     * 
+     * @return
+    **/
+    int getDeviceSDK();
+ 
+    /**
+     * 获取手机Android 版本
+     * 
+     * @return
+    **/
+    String getDeviceAndroidVersion();
+ 
+    /**
+     * 获取当前手机系统语言。
+     */
+    String getDeviceDefaultLanguage();
+ 
+    /**
+     * 获取当前系统上的语言列表(Locale列表)
+    **/
+    String getDeviceSupportLanguage();
+	
+    /**
+     * 获取全部设备信息
+    **/
+    String getDeviceAllInfo();
+    
+    /**
+     * 获取系统剩余存储容量
+    **/
+    String getAvailableStorage();  
+
+    /**
+     * 获取系统电量
+    **/   
+    int getSystemBattery();
+
+    /**
+     * 禁止/启用 关机
+    **/ 
+    void setShutdownEnable(boolean enable);
+    
+    /**
+     * setSystemTimeEnable
+    **/
+    void setSystemTimeEnable(boolean enable);
+
+    /**
+    * 获取IMSI
+    **/
+    String getPhoneIMSI();
+	
+    /**
+    * 开启flash闪光报警
+    **/	
+    void startflashAlarm();
+	
+    /**
+    * 停止flash闪光报警
+    **/	
+    void stopflashAlarm();
+	
+    /**
+    * 添加通讯录
+    **/	
+    void writeContacts(String name, String phone, String mail);
+	
+    /**
+    * 重置个人应用编好
+    **/	
+    void resetAppsHelper();
+	
+    /**
+    * 重置所有应用数据
+    **/
+    void resetAllAppsData();
+	
+    /**
+    * 禁用/启用蓝牙BLE
+    **/
+    boolean setBluetoothBleEnabled(boolean enable);
+	
+    /**
+	* 获取信号强度
+    **/
+    int getMobileDbm();
+	
+    /**
+    * 禁用/启用自动时间
+    **/
+    void setAutoTimeEnable(boolean enable);
+
+    /**
+	* 禁用/启用设置GPS,禁用后,用户不能设置开启和关闭GPS
+	* 启用后,可以正常设置开启或关闭GPS,能够正常使用
+	* @param enable
+	* true 启用/false 禁用
+	**/
+    void setGpsLocationEnable(boolean enable);
+	
+    /**
+    * 设置摄像头白名单列表
+    * @param packageNameList
+    * 包名列表
+    **/
+    void addCameraWhiteList(in List<String> packageName);
+
+    /**
+    * 删除摄像头白名单列表
+    * @param packageNameList
+    * 包名列表
+    **/
+    void delCameraWhiteList(in List<String> packageName);
+
+    /**
+    * 清空摄像头白名单列表
+    **/
+    void clearCameraWhiteList();
+
+    /**
+    * 获取摄像头白名单列表
+    * @return List<String>
+    * 返回List列表
+    **/
+    List<String> getCameraWhiteList();
+	
+    /**
+    * 启用/禁用Camera功能
+    **/	
+    void enableOpenCamera(boolean enable);
+    
+    /**
+    * 设置系统日期
+    **/
+    void setSysDate(int year,int month,int day);
+	
+    /**
+    * 设置系统时间
+    **/
+    void setSysTime(int hour,int minute);
+
+    /**
+    * 禁用/启用工厂恢复设置
+    **/
+    void setFactoryResetEnable(boolean enable);
+    /**
+    * 禁用/启用安装未知应用
+    **/
+    void setInstallUnknownSourceEnable(boolean enable);
+    /**
+    * 禁用/启用安装应用
+    **/
+    void setInstallAppsEnable(boolean enable);
+    /**
+    * 禁用/启用卸载应用
+    **/
+    void setUnInstallAppsEnable(boolean enable);
+    /**
+    * 禁用/启用漫游时使用移动数据
+    **/
+    void setDataRoamingEnable(boolean enable);
+    /**
+    * 禁用/启用设置壁纸
+    **/
+    void setSetWallPaperEnable(boolean enable);
+    /**
+    * 禁用/启用NFC发送数据
+    **/
+    void setNFCOutGoingEnable(boolean enable);
+    /**
+    * 禁用/启用移动热点
+    **/
+    void setTetheringEnable(boolean enable);
+    /**
+    * 禁用/启用USB文件传输
+    **/
+    void setUsbFileTransferEnable(boolean enable);
+
+    void setWakeLockEnable(boolean enable);
+
+    /**
+    * No. 194	
+    * setNFCEnable
+    **/
+    void setNFCEnable(boolean enable);
+	
+    /**
+    * No. 195
+    * 设置开机启动应用
+    * apk的包名
+    **/
+    void setPowerBootApp(String packageName);
+	
+    /**
+    * No. 196
+    * 获取开机启动应用
+    * apk的包名
+    **/
+    String getPowerBootApp();
+	
+    /**
+    * No. 197
+    * 清除开机启动应用
+    * apk的包名
+    **/
+    void clearPowerBootApp();
+
+
+    /**
+    * No. 199
+    * 打开关闭定时开机接口
+    * int mId : 值 1或者2 ,1 开机,2 关机
+    * boolean mEnabled 打开或者关闭
+    **/
+    void enablePowerOnByAlarm(int mId,boolean mEnabled);
+
+}

+ 15 - 0
app/src/main/java/com/hh/hhomc/common/Constants.java

@@ -45,6 +45,21 @@ public class Constants {
         // 查询设备业务参数
         public static final String QUERY_DEVICE_BIZ_DATA = "QUERY_DEVICE_BIZ_DATA";
 
+        // 显示导航栏
+        public static final String START_NAV = "START_NAV";
+
+        // 关闭导航栏
+        public static final String CLOSE_NAV = "CLOSE_NAV";
+
+        // 开启通知栏
+        public static final String START_NOTICE = "START_NOTICE";
+
+        // 关闭通知栏
+        public static final String CLOSE_NOTICE = "CLOSE_NOTICE";
+
+        // 启动应用
+        public static final String START_APP = "START_APP";
+
 
     }
 

+ 8 - 2
app/src/main/java/com/hh/hhomc/deviceui/BaseDeviceUI.java

@@ -45,13 +45,19 @@ public class BaseDeviceUI {
         else if (Constants.DeviceModel.ZP.equals(model)||Constants.DeviceModel.ZP_A10.equals(model)) {
             // 紫鹏
             iDeviceUI = ZpDeviceUI.getInstance();
-        } else if (Constants.DeviceModel.D2.equals(model)) {
+        }
+        else if(Constants.DeviceModel.ZP_A50.equals(model)){
+            iDeviceUI=ZpA50DeviceUI.getInstance();
+
+        }else if (Constants.DeviceModel.D2.equals(model)) {
             // d2
             iDeviceUI = D2DeviceUI.getInstance();
         } else if (Constants.DeviceModel.T1YB01.equals(model) || Constants.DeviceModel.T1YB01A.equals(model)) {
             // y9
             iDeviceUI = MlaDeviceUI.getInstance();
-        } else {
+        }  else if(Constants.DeviceModel.PDA.equals(model)){
+            iDeviceUI = PDADeviceUI.getInstance();
+        }else {
             //其余设备
             iDeviceUI = NullDeviceUI.getInstance();
         }

+ 2 - 0
app/src/main/java/com/hh/hhomc/deviceui/Constants.java

@@ -34,6 +34,8 @@ public class Constants {
         // 马里奥-Y9——蚂蚁OS
         public static final String T1YB01A = "T1YB01A";
 
+        public static final String PDA = "PDA";
+
     }
 
 }

+ 26 - 10
app/src/main/java/com/hh/hhomc/deviceui/D2DeviceUI.java

@@ -7,6 +7,7 @@ import android.text.TextUtils;
 import com.common.face.api.FaceUtil;
 import com.common.lib_base.utils.log.AppLogUtils;
 import com.common.pos.api.util.ShellUtils;
+import com.hh.hhomc.MyApplication;
 
 /**
  * 天波-D2
@@ -38,48 +39,48 @@ public class D2DeviceUI implements IDeviceUI{
 
     // 显示下拉通知栏
     @Override
-    public void showNotification(Activity activity) {
+    public void showNotification() {
         Intent intent = new Intent();
         intent.setAction("android.intent.action.systemui");
         intent.putExtra("statusbar_drop", "on");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     // 禁止下拉通知栏
     @Override
-    public void hideNotification(Activity activity) {
+    public void hideNotification() {
         Intent intent = new Intent();
         intent.setAction("android.intent.action.systemui");
         intent.putExtra("statusbar_drop", "off");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     // 显示底部导航栏
     @Override
-    public void showNavigationBar(Activity activity) {
+    public void showNavigationBar() {
         Intent intent = new Intent();
         intent.setAction("android.intent.action.systemui");
         intent.putExtra("navigation_bar", "show");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     // 隐藏底部导航栏
     @Override
-    public void hideNavigationBar(Activity activity) {
+    public void hideNavigationBar() {
         Intent intent = new Intent();
         intent.setAction("android.intent.action.systemui");
         intent.putExtra("navigation_bar", "dismiss");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void showFillLight(Activity activity) {
+    public void showFillLight() {
         FaceUtil.GPIOSet("rgb_led_en",1);//1开,0关
         FaceUtil.GPIOSet("ir_led_en",1);//1开,0关
     }
 
     @Override
-    public void hideFillLight(Activity activity) {
+    public void hideFillLight() {
         FaceUtil.GPIOSet("rgb_led_en",0);//1开,0关
         FaceUtil.GPIOSet("ir_led_en",0);//1开,0关
     }
@@ -125,7 +126,22 @@ public class D2DeviceUI implements IDeviceUI{
 
     }
 
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
 
+        }
+    }
 
 
 }

+ 8 - 6
app/src/main/java/com/hh/hhomc/deviceui/IDeviceUI.java

@@ -5,22 +5,22 @@ import android.app.Activity;
 public interface IDeviceUI {
 
     // 显示通知栏
-    void showNotification(Activity activity);
+    void showNotification();
 
     // 隐藏通知栏
-    void hideNotification(Activity activity);
+    void hideNotification();
 
     // 显示导航栏
-    void showNavigationBar(Activity activity);
+    void showNavigationBar();
 
     // 隐藏导航栏
-    void hideNavigationBar(Activity activity);
+    void hideNavigationBar();
 
     // 打开补光灯
-    void showFillLight(Activity activity);
+    void showFillLight();
 
     // 关闭补光灯
-    void hideFillLight(Activity activity);
+    void hideFillLight();
 
     // 重启设备
     void reboot();
@@ -31,6 +31,8 @@ public interface IDeviceUI {
     //卸载应用
     void silenceUnInstall(String packageName);
 
+    void startAPP(String packageName);
+
 
 }
 

+ 27 - 10
app/src/main/java/com/hh/hhomc/deviceui/K8DeviceUI.java

@@ -3,9 +3,11 @@ package com.hh.hhomc.deviceui;
 import android.app.Activity;
 import android.content.Intent;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.common.lib_base.utils.log.AppLogUtils;
 import com.common.pos.api.util.ShellUtils;
+import com.hh.hhomc.MyApplication;
 
 import java.io.BufferedReader;
 import java.io.DataOutputStream;
@@ -40,40 +42,40 @@ public class K8DeviceUI implements IDeviceUI {
     }
 
     @Override
-    public void showNotification(Activity activity) {
+    public void showNotification() {
         Intent intent = new Intent();
         intent.setAction("com.android.systemui.statusbar.phone.statusopen");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void hideNotification(Activity activity) {
+    public void hideNotification() {
         Intent intent = new Intent();
         intent.setAction("com.android.systemui.statusbar.phone.statusclose");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void showNavigationBar(Activity activity) {
+    public void showNavigationBar() {
         Intent intent = new Intent();
         intent.setAction("com.android.internal.policy.impl.showNavigationBar");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void hideNavigationBar(Activity activity) {
+    public void hideNavigationBar() {
         Intent intent = new Intent();
         intent.setAction("com.android.internal.policy.impl.hideNavigationBar");
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void showFillLight(Activity activity) {
+    public void showFillLight() {
 
     }
 
     @Override
-    public void hideFillLight(Activity activity) {
+    public void hideFillLight() {
 
     }
 
@@ -117,5 +119,20 @@ public class K8DeviceUI implements IDeviceUI {
 
     }
 
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
+        }
+    }
 
 }

+ 25 - 6
app/src/main/java/com/hh/hhomc/deviceui/MlaDeviceUI.java

@@ -4,6 +4,7 @@ import static com.orbbec.ssdk.out.OrbbecSSDKConst.Key.KEY_EXT_LONG_TIME_OUT;
 import static com.orbbec.ssdk.out.OrbbecSSDKConst.Key.KEY_RESULT_DATA;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
 
@@ -61,7 +62,7 @@ public class MlaDeviceUI implements IDeviceUI{
     }
 
     @Override
-    public void showNotification(Activity activity) {
+    public void showNotification() {
         OrbbecSSDKApi.getInstance().startFunc("C.SYS","setDropdownBarEnable",new Object[]{true},null, new OrbbecSSDKCallback() {
             @Override
             public void onResponse(OrbbecSSDKResponse orbbecSSDKResponse) {
@@ -72,7 +73,7 @@ public class MlaDeviceUI implements IDeviceUI{
     }
 
     @Override
-    public void hideNotification(Activity activity) {
+    public void hideNotification() {
         OrbbecSSDKApi.getInstance().startFunc("C.SYS","setDropdownBarEnable",new Object[]{false},null, new OrbbecSSDKCallback() {
             @Override
             public void onResponse(OrbbecSSDKResponse orbbecSSDKResponse) {
@@ -83,7 +84,7 @@ public class MlaDeviceUI implements IDeviceUI{
     }
 
     @Override
-    public void showNavigationBar(Activity activity) {
+    public void showNavigationBar() {
         OrbbecSSDKApi.getInstance().startFunc("C.SYS","setNavigationBarVisible",new Object[]{true},null, new OrbbecSSDKCallback() {
             @Override
             public void onResponse(OrbbecSSDKResponse orbbecSSDKResponse) {
@@ -94,7 +95,7 @@ public class MlaDeviceUI implements IDeviceUI{
     }
 
     @Override
-    public void hideNavigationBar(Activity activity) {
+    public void hideNavigationBar() {
         OrbbecSSDKApi.getInstance().startFunc("C.SYS","setNavigationBarVisible",new Object[]{false},null, new OrbbecSSDKCallback() {
             @Override
             public void onResponse(OrbbecSSDKResponse orbbecSSDKResponse) {
@@ -105,12 +106,12 @@ public class MlaDeviceUI implements IDeviceUI{
     }
 
     @Override
-    public void showFillLight(Activity activity) {
+    public void showFillLight() {
 
     }
 
     @Override
-    public void hideFillLight(Activity activity) {
+    public void hideFillLight() {
 
     }
 
@@ -153,4 +154,22 @@ public class MlaDeviceUI implements IDeviceUI{
         OrbbecSSDKApi.getInstance().startFunc("C.APP","uninstall",args,null, null);
     }
 
+
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
+
+        }
+    }
+
 }

+ 26 - 6
app/src/main/java/com/hh/hhomc/deviceui/NullDeviceUI.java

@@ -1,10 +1,12 @@
 package com.hh.hhomc.deviceui;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.text.TextUtils;
 
 import com.common.lib_base.utils.log.AppLogUtils;
 import com.common.pos.api.util.ShellUtils;
+import com.hh.hhomc.MyApplication;
 
 /**
  * 其余设备
@@ -35,28 +37,28 @@ public class NullDeviceUI implements IDeviceUI {
 
 
     @Override
-    public void showNotification(Activity activity) {
+    public void showNotification() {
     }
 
     @Override
-    public void hideNotification(Activity activity) {
+    public void hideNotification() {
     }
 
     @Override
-    public void showNavigationBar(Activity activity) {
+    public void showNavigationBar() {
     }
 
     @Override
-    public void hideNavigationBar(Activity activity) {
+    public void hideNavigationBar() {
     }
 
     @Override
-    public void showFillLight(Activity activity) {
+    public void showFillLight() {
 
     }
 
     @Override
-    public void hideFillLight(Activity activity) {
+    public void hideFillLight() {
 
     }
 
@@ -92,4 +94,22 @@ public class NullDeviceUI implements IDeviceUI {
     public void silenceUnInstall(String packageName) {
 
     }
+
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
+
+        }
+    }
+
 }

+ 186 - 0
app/src/main/java/com/hh/hhomc/deviceui/PDADeviceUI.java

@@ -0,0 +1,186 @@
+package com.hh.hhomc.deviceui;
+
+import static android.content.Context.BIND_AUTO_CREATE;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.hh.hhomc.MyApplication;
+import com.kte.interfacesettings.aidl.ITools;
+
+/**
+ * Description: $
+ *
+ * @author xwh
+ * time 2024/12/11
+ **/
+public class PDADeviceUI implements IDeviceUI{
+
+
+    //用volatile关键字确保 instance 在多线程下的可见性
+    private static volatile PDADeviceUI instance = null;
+
+    //将构造方法私有化,禁止外部通过构造方法创建实例
+    private PDADeviceUI() {
+        Intent intent2 = new Intent("com.kte.interfacesettings.aidl");
+        intent2.setPackage("com.kte.interfacesettings");
+        MyApplication.getContext().bindService(intent2,connectionService,BIND_AUTO_CREATE);
+    }
+
+
+
+    //提供一个公共的访问方法,用于获取该类的唯一实例
+    public static PDADeviceUI getInstance() {
+        //如果instance为空,就进行实例化
+        if (instance == null) {
+            //保证多线程下只有一个线程进行实例化
+            synchronized (PDADeviceUI.class) {
+                //第二次判断,避免多线程下创建多个实例
+                if (instance == null) {
+                    instance = new PDADeviceUI();
+                }
+            }
+        }
+        return instance;
+    }
+
+    private ITools myAIDLService;
+
+    private ServiceConnection connectionService = new ServiceConnection(){
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            myAIDLService = ITools.Stub.asInterface(service);
+            if(myAIDLService !=null){
+                Log.d("BaseActivity"," myAIDLService"+myAIDLService.toString()+" AIDL 连接成功");
+            }
+            Log.d("BaseActivity","AIDL 绑定成功");
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            myAIDLService = null;
+        }
+    };
+
+
+
+
+    @Override
+    public void showNotification() {
+        if(myAIDLService !=null){
+            try {
+                myAIDLService.setStatusBarDropEnable(true);
+            } catch (RemoteException e) {
+
+            }
+        }
+    }
+
+    @Override
+    public void hideNotification() {
+        if(myAIDLService !=null){
+            try {
+                myAIDLService.setStatusBarDropEnable(false);
+            } catch (RemoteException e) {
+
+            }
+        }
+    }
+
+    @Override
+    public void showNavigationBar() {
+        if(myAIDLService !=null){
+            try {
+                myAIDLService.setHomeEnable(true);
+                myAIDLService.setBackEnable(true);
+                myAIDLService.setRecentEnable(true);
+            } catch (RemoteException e) {
+
+            }
+        }
+    }
+
+    @Override
+    public void hideNavigationBar() {
+        if(myAIDLService !=null){
+            try {
+                myAIDLService.setBackEnable(false);
+                myAIDLService.setHomeEnable(false);
+                myAIDLService.setRecentEnable(false);
+            } catch (RemoteException e) {
+
+            }
+        }
+    }
+
+    @Override
+    public void showFillLight() {
+
+    }
+
+    @Override
+    public void hideFillLight() {
+
+    }
+
+    @Override
+    public void reboot() {
+        if(myAIDLService !=null){
+            try {
+                myAIDLService.rebootDevice();
+            } catch (RemoteException e) {
+
+            }
+        }
+    }
+
+    @Override
+    public void silenceInstall(String path, SilenceInstallSuccessListener listener) {
+        if(myAIDLService !=null){
+            try {
+                myAIDLService.silentInstall(path,false);
+                if(listener!=null){
+                    listener.success(true);
+                }
+            } catch (RemoteException e) {
+                if(listener!=null){
+                    listener.success(false);
+                }
+            }
+        }else{
+            if(listener!=null){
+                listener.success(false);
+            }
+        }
+
+    }
+
+    @Override
+    public void silenceUnInstall(String packageName) {
+
+    }
+
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
+
+        }
+    }
+
+}

+ 141 - 0
app/src/main/java/com/hh/hhomc/deviceui/ZpA50DeviceUI.java

@@ -0,0 +1,141 @@
+package com.hh.hhomc.deviceui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.Looper;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.hh.hhomc.MyApplication;
+import com.innohi.YNHAPI;
+import com.roco.api.weigenRelay.weigenRelay;
+
+/**
+ * 紫鹏
+ */
+public class ZpA50DeviceUI implements IDeviceUI{
+
+
+    //用volatile关键字确保 instance 在多线程下的可见性
+    private static volatile ZpA50DeviceUI instance = null;
+
+    //将构造方法私有化,禁止外部通过构造方法创建实例
+    private ZpA50DeviceUI() {}
+
+    //提供一个公共的访问方法,用于获取该类的唯一实例
+    public static ZpA50DeviceUI getInstance() {
+        //如果instance为空,就进行实例化
+        if (instance == null) {
+            //保证多线程下只有一个线程进行实例化
+            synchronized (ZpA50DeviceUI.class) {
+                //第二次判断,避免多线程下创建多个实例
+                if (instance == null) {
+                    instance = new ZpA50DeviceUI();
+                }
+            }
+        }
+        return instance;
+    }
+
+
+    @Override
+    public void showNotification() {
+        Intent intent = new Intent();
+        intent.setAction("com.custom.open.statubar");
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        MyApplication.getContext().sendBroadcast(intent);
+    }
+
+    @Override
+    public void hideNotification() {
+        Intent intent = new Intent();
+        intent.setAction("com.custom.close.statubar");
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        MyApplication.getContext().sendBroadcast(intent);
+    }
+
+    @Override
+    public void showNavigationBar() {
+        Intent intent = new Intent();
+        intent.setAction("com.custom.show_navigationbar");
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        MyApplication.getContext().sendBroadcast(intent);
+    }
+
+    @Override
+    public void hideNavigationBar() {
+        Intent intent = new Intent();
+        intent.setAction("com.custom.hide_navigationbar");
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        MyApplication.getContext().sendBroadcast(intent);
+    }
+
+    @Override
+    public void showFillLight() {
+
+    }
+
+    @Override
+    public void hideFillLight() {
+
+    }
+
+
+
+    @Override
+    public void reboot() {
+
+        try {
+            YNHAPI mAPI = YNHAPI.getInstance();
+            mAPI.reboot();
+        }catch (Exception e){
+
+        }
+    }
+
+    @Override
+    public void silenceInstall(String path,SilenceInstallSuccessListener listener) {
+        if(TextUtils.isEmpty(path)){
+            return ;
+        }
+        try {
+            YNHAPI mAPI = YNHAPI.getInstance();
+            mAPI.installApkSilently(path,null,null);
+            if(listener!=null){
+                listener.success(true);
+            }
+        }catch (Exception e){
+            if(listener!=null){
+                listener.success(false);
+            }
+        }
+
+    }
+
+
+    //Todo 目前还无法使用
+    @Override
+    public void silenceUnInstall(String packageName) {
+
+    }
+
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
+
+        }
+    }
+
+
+}

+ 26 - 10
app/src/main/java/com/hh/hhomc/deviceui/ZpDeviceUI.java

@@ -39,44 +39,44 @@ public class ZpDeviceUI implements IDeviceUI{
 
 
     @Override
-    public void showNotification(Activity activity) {
+    public void showNotification() {
         Intent intent = new Intent();
         intent.setAction("com.custom.open.statubar");
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void hideNotification(Activity activity) {
+    public void hideNotification() {
         Intent intent = new Intent();
         intent.setAction("com.custom.close.statubar");
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void showNavigationBar(Activity activity) {
+    public void showNavigationBar() {
         Intent intent = new Intent();
         intent.setAction("com.custom.show_navigationbar");
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void hideNavigationBar(Activity activity) {
+    public void hideNavigationBar() {
         Intent intent = new Intent();
         intent.setAction("com.custom.hide_navigationbar");
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        activity.sendBroadcast(intent);
+        MyApplication.getContext().sendBroadcast(intent);
     }
 
     @Override
-    public void showFillLight(Activity activity) {
+    public void showFillLight() {
 
     }
 
     @Override
-    public void hideFillLight(Activity activity) {
+    public void hideFillLight() {
 
     }
 
@@ -134,5 +134,21 @@ public class ZpDeviceUI implements IDeviceUI{
         });
     }
 
+    @Override
+    public void startAPP(String packageName) {
+        if(TextUtils.isEmpty(packageName)){
+            return;
+        }
+        Intent intent = MyApplication.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
+        try {
+            if (intent != null) {
+                MyApplication.getContext().startActivity(intent);
+            } else {
+                // 应用无法启动
+            }
+        }catch (Exception e){
+
+        }
+    }
 
 }

+ 55 - 36
app/src/main/java/com/hh/hhomc/services/BackgroundService.java

@@ -101,12 +101,17 @@ import okhttp3.RequestBody;
 
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.CANCEL_UPGRADE;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.CLOSE_APP;
+import static com.hh.hhomc.common.Constants.SERVER_ACTION.CLOSE_NAV;
+import static com.hh.hhomc.common.Constants.SERVER_ACTION.CLOSE_NOTICE;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.DOWNLOAD_LOG;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.FETCH_LOG;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.INSTALL_UPGRADE;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.QUERY_DEVICE_BIZ_DATA;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.REBOOT;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.REPORT_STATUS;
+import static com.hh.hhomc.common.Constants.SERVER_ACTION.START_APP;
+import static com.hh.hhomc.common.Constants.SERVER_ACTION.START_NAV;
+import static com.hh.hhomc.common.Constants.SERVER_ACTION.START_NOTICE;
 import static com.hh.hhomc.common.Constants.SERVER_ACTION.UPGRADE_PROCESSING;
 import static com.hh.hhomc.common.Constants.VALUE.TIME_HEARTBEAT;
 import static com.hh.hhomc.common.Constants.VALUE.TIME_INSTALL_ALL;
@@ -677,45 +682,59 @@ public class BackgroundService extends Service {
                                 // 服务端要干的操作
                                 String op = serverActionBean.getOp();
                                 AppLogUtils.e("op--" + op);
-                                if (FETCH_LOG.equals(op)) {
-                                    AppLogUtils.e(FETCH_LOG + "  拉取日志列表,上传日志文件名列表供展示下载");
-
-                                    returnLogNameList(serverActionBean);
-
-                                } else if (DOWNLOAD_LOG.equals(op)) {
-                                    AppLogUtils.e(DOWNLOAD_LOG + "  后台返回选中要下载日志列表,进行日志文件上传");
-
-                                    uploadLogFileList(serverActionBean);
-
-                                } else if (INSTALL_UPGRADE.equals(op)) {
-                                    AppLogUtils.e(INSTALL_UPGRADE + "  apk安装升级");
-
-                                    installApkByServer(serverResultStr);
-
-
-                                } else if (CANCEL_UPGRADE.equals(op)) {
-                                    AppLogUtils.e(CANCEL_UPGRADE + "  apk取消安装升级");
-
-                                    cancelApkByServer(serverResultStr);
-
-
-                                } else if (CLOSE_APP.equals(op)) {
-                                    AppLogUtils.e(CLOSE_APP + "  应⽤关闭");
-
-                                    closeAppByServer(serverActionBean);
-
-                                } else if (REBOOT.equals(op)) {
-                                    AppLogUtils.e(REBOOT + "  应⽤设备重启");
-
-                                    restartDevice();
-
-                                } else if (QUERY_DEVICE_BIZ_DATA.equals(op)) {
-                                    AppLogUtils.e(REBOOT + "  获取设备业务参数");
-
-                                    queryDeviceAppInfo(serverResultStr);
 
+                                switch (op){
+                                    case FETCH_LOG:
+                                        AppLogUtils.e(FETCH_LOG + "  拉取日志列表,上传日志文件名列表供展示下载");
+                                        returnLogNameList(serverActionBean);
+                                        break;
+                                    case DOWNLOAD_LOG:
+                                        AppLogUtils.e(DOWNLOAD_LOG + "  后台返回选中要下载日志列表,进行日志文件上传");
+                                        uploadLogFileList(serverActionBean);
+                                        break;
+                                    case INSTALL_UPGRADE:
+                                        AppLogUtils.e(INSTALL_UPGRADE + "  apk安装升级");
+                                        installApkByServer(serverResultStr);
+                                        break;
+                                    case CANCEL_UPGRADE:
+                                        AppLogUtils.e(CANCEL_UPGRADE + "  apk取消安装升级");
+                                        cancelApkByServer(serverResultStr);
+                                        break;
+                                    case CLOSE_APP:
+                                        AppLogUtils.e(CLOSE_APP + "  应⽤关闭");
+                                        closeAppByServer(serverActionBean);
+                                        break;
+                                    case REBOOT:
+                                        AppLogUtils.e(REBOOT + "  应⽤设备重启");
+                                        restartDevice();
+                                        break;
+                                    case QUERY_DEVICE_BIZ_DATA:
+                                        AppLogUtils.e(REBOOT + "  获取设备业务参数");
+                                        queryDeviceAppInfo(serverResultStr);
+                                        break;
+                                    case START_NAV:
+                                        AppLogUtils.e(START_NAV + "  显示导航栏");
+                                        getiDeviceUI().showNavigationBar();
+                                        break;
+                                    case CLOSE_NAV:
+                                        AppLogUtils.e(CLOSE_NAV + "  关闭导航栏");
+                                        getiDeviceUI().hideNavigationBar();
+                                        break;
+                                    case START_NOTICE:
+                                        AppLogUtils.e(START_NOTICE + "  开启通知栏");
+                                        getiDeviceUI().showNotification();
+                                        break;
+                                    case CLOSE_NOTICE:
+                                        AppLogUtils.e(CLOSE_NOTICE + "  关闭通知栏");
+                                        getiDeviceUI().hideNotification();
+                                        break;
+                                    case START_APP:
+                                        AppLogUtils.e(START_APP + "  启动应用");
+                                        getiDeviceUI().startAPP(serverActionBean.getPackageName());
+                                        break;
                                 }
 
+
                             }
 
 

+ 2 - 2
config.gradle

@@ -7,8 +7,8 @@ ext {
 //            minSdkVersion    : 24,
             minSdkVersion    : 21,
             targetSdkVersion : 30,
-            versionCode      : 21,
-            versionName      : "1.3.14"
+            versionCode      : 23,
+            versionName      : "1.4.0"
     ]
     //依赖 配置
     dependencies = [