# GViewer   中控程序 



## 升级说明



- 2021-7-29 12:23:00

  增加超出页面滑动功能，详见Demo 首页，页面高度大于屏幕高度才能滑动。



- 2020-10-23 16:21:28

  升级 firmware 最新固件，运行程序 ，既可以获取和中控通讯的数据。
  
  

- 2019-11-18 11:03:56

<img src="Ubains.ui.png" alt="Image text" style="zoom: 100%;" />



## App 下载:  

标准版:      http://app.ubainsyun.com/GViewer

开发版本:    http://app.ubainsyun.com/ubainsDevelop

说明

- 标准版版本相对稳定，经过大量验证测试使用，可以放心使用，但Android 特性没有开发板的完善，后续测试稳定会同步开发板所有相关特性。

  

-  开发版本随时更新许多新特性，但是未经过大量测试验证，存在一定风险，如不追求新特性，控件，建议使用标准版本。



## 方法说明:

| 方法名称        | 说明                                                         | 代码                                                         |      |
| --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---- |
| FontSize        | 修改按钮字体大小或者文本框文字大小                           | BroadcastChangeProperty(FindGUIObject('aaa'),'FontSize', "20"); |      |
| FontColor       | 修改按钮字体颜色或者文本框文字颜色                           | BroadcastChangeProperty(FindGUIObject('aaa'),'FonTColor', "[225,0,0]"); |      |
| Text            | 修改按钮文字或者文本框文字                                   |                                                              |      |
| Pos             | 移动View 的位置                                              |                                                              |      |
| Size            | 设置View 的宽、高                                            |                                                              |      |
| ImagePic        | 修改Image，Button 的图片                                     |                                                              |      |
| ButtonDownImage | 修改Image，Button 按下的图片                                 |                                                              |      |
| BarNodePosition | 修改进度条的值                                               |                                                              |      |
| AppJump         | 更具包名跳转到指定的app界面                                  | BroadcastChangeProperty(FindGUIObject('ddd'),'APPJump', "com.android.browser"); |      |
| IoLight         | UT-13、 UT-10 灯光控制<br />开绿灯  0x41   <br />关绿灯  0x40<br />开红灯  0x31<br />关绿灯  0x30<br />开门      0x51<br />关门      0x50 | BroadcastChangeProperty(FindGUIObject('ddd'),'IOLight',0x41);<br /> |      |
| AsGif           | 加载GIF 动画                                                 | BroadcastChangeProperty(FindGUIObject('imageOne'),'ASGif','json'); |      |
| HideView        | 隐藏View                                                     | BroadcastChangeProperty(FindGUIObject('eee'),'hideview',''); |      |
| ShowView        | 显示View                                                     | BroadcastChangeProperty(FindGUIObject('eee'),'ShowView',''); |      |
| showList        | 显示list二维数组列表                                         |                                                              |      |
| ActivityJump    | App内页面跳转                                                | BroadcastChangeProperty(FindGUIObject('video'),'ActivityJump', 'VideoActivity'); |      |
| GetInput        | 获取输入框数据                                               | BroadcastChangeProperty(FindGUIObject('inputbox1'),'getInput', ''); |      |
| setInput        | 设置输入框的值                                               | BroadcastChangeProperty(FindGUIObject('inputbox1'),'setInput', '测试文字'); |      |
| setInputHint    | 设置提示文字                                                 | BroadcastChangeProperty(FindGUIObject('inputbox1'),'setInputHint', '测试文字'); |      |
| hideInput       | 隐藏键盘                                                     | BroadcastChangeProperty(FindGUIObject('inputbox1'),'hideInput', ''); |      |
| showInput       | 显示键盘                                                     | BroadcastChangeProperty(FindGUIObject('inputbox1'),'showInput', ''); |      |
| setInputFocus   | 设置输入框焦点                                               |                                                              |      |
|                 |                                                              |                                                              |      |
|                 |                                                              |                                                              |      |
|                 |                                                              |                                                              |      |



1.根据中控编写程序    在 Button_Push (按下)、Button_Release(松手)、Button_Hold（长按） 以及Hold_Time 多少毫秒触发事件



**按下**

```java
/** 
 *按钮按下方法,需要传入按下按钮的 UUID
 * @param btnId UUID
 */
public void sendBtnActionDown(String btnId) {
    count = count + 1;
    String body = "{\"btnid\": \"" + btnId + "\", \"btndown\": 0, \"command\": \"CallButton\", \"seq\": " + count + ", \"uniq_id\": \"2ce1ca9ee7d711e8bfde001a7dda7111\"}";
}
```

**松手**

```java
/**
 * 按钮松手
 * @param btnId UUID
 */
public void sendBtnActionUp(String btnId) {
    count = count + 1;
    String body = "{\"btnid\": \"" + btnId + "\", \"btndown\": 2, \"command\": \"CallButton\", \"seq\": " + count + ", \"uniq_id\": \"2ce1ca9ee7d711e8bfde001a7dda7111\"}";
}
```



**按钮移动**

```java
/**
 * 按钮移动 
 * @param objID UUID
 */
public void sendBtnActionMove(String objID, float x, float y) {
    count = count + 1;
    String body = "{\"seq\":" + count + ",\"command\":\"ControllerChangeProperty\",\"value\":[" + x + "," + y + "],\"property_name\":\"Pos\",\"obj_id\":\"" + objID + "\"}";
}
```

**方法说明:**

```json
{
    "seq": 33472,
    "command": "ChangeProperty",
    "objid": "501fd972fbbf11e8a974d4258b878bb9",
    "value": 22,         //数据
    "name": "FontSize"   //指令
}
```

## 

ASGIF

```json
{
    "action": "start",                       // start 开始播放  stop 暂停播放
    "path": "images\\321.gif",               // 播放gif 路径
    "repeat": 0,                             // 重复次数(正整数)   0  无限循环重复  , 1-65535 重复次数
    "color": "#000000",                      //设置gif 背景颜色 
    "speed": 1.1                             //设置播放速度    0原始速度, 0.1-n 倍速 ，
}
```

## 页面控制

在项目包中 有 init.json  文件，里面有对中控程序进行页面跳转的控制。

```
[
    {
        "desc": "黑名单1",
        "devices": "八寸门口屏",
        "host": "192.168.1.2",
        "serialNum": "4196952e629d24c9",
        "blackList": [
            "分布式",
            "CCCC"
        ]
    },
    {
        "desc": "黑名单2",
        "devices": "八寸门口屏",
        "host": "192.168.1.2",
        "serialNum": "4196952e629d2415",
        "blackList": [
            "文本框",
            "分布式",
            "CCCC"
        ]
    },
    {
        "desc": "黑名单3",
        "devices": "八寸门口屏",
        "host": "192.168.1.2",
        "serialNum": "4196952e629d2487",
        "blackList": [
            "AAA",
            "BBB",
            "CCCC"
        ]
    }
]
```



json 说明

| 字段      | 说明         | 描述                                     |
| --------- | ------------ | ---------------------------------------- |
| desc      | String       | 用于描述 可以不填写                      |
| devices   | String       | 设备名称，                               |
| host      | String       | 终端IP，可以                             |
| serialNum | String       | 设备序列号，用于区别多个设备             |
| blackList | List<String> | 跳页黑名单，在此名单中的，将不执行跳页。 |





## 版本计划 :

- [x] 字体适配
- [ ] 层级错乱
- [x] 标准版 隐藏按钮接口
- [x] 长时间后台运行后，通讯服务断开//增加后台运行
- [ ] pad 在线/离线 触发特定function 更新同步平板按钮状态 中控增加新的接口
- [x] 需要viewlist功能 自定义大小 自定义行数 自定义数据 返回当前数据 单级别
- [ ] bar型控件 left to right 定位
- [ ] GIF单次/永久播放
- [x]  一个加载rtsp
- [ ] 一个加载mjpeg  / http//..... 4通道
- [ ] text型的控件 可以设置成穿透
- [ ] 上传UI到gviewer 手动复制到images文件夹后的图片加载button会出错，重新打开gedit软件后上传变正常；
- [ ] 手势触发function 中控增加新的接口
- [x] 搜索框,发送
- [ ] 修改Toast 圆角
- [ ] GIF播放问题。 启动播放，手动播放，暂停，循环次数。
- [ ] 动态改变App图标
- [ ] 动态改变App名称







## 问题反馈:

### 问题1：音量拉条问题

**问题**:  上传音量拉条点击，文字有改变，拉条无变化

![image-20210424165242762](https://gitee.com/Noavan/NoteImages/raw/develop/Images/image-20210424165242762.png)

解决方案:

将 当前项目下 firmware  中 system.dat 文件 替换**安装目录**下的system.dat文件， 替换完成后，先点击GEdit 编译器上的保存 ，然后重新上传中控文件到中控。 

主要替换两个路径下的文件， 如下图。

![image-20210424165412985](https://gitee.com/Noavan/NoteImages/raw/develop/Images/image-20210424165412985.png)

