# 设备控制

## 发送消息

### 介绍

发送指令消息给音乐主机，消息的内容是通过CreateMessage创建，消息创建请参考该类的文档

### 方法原型

```
/**
 * 发送消息给机器端
 *
 * @param topic        地址
 * @param phoneMessage 消息
 */
public void sendMessage(String topic, PhoneMessage phoneMessage)
```

### 调用

使用MqttContorl对象调用

### 参数介绍

* topic：Deivie中的sendTopic
* phoneMessage：消息的Java bean 对象，通过CreateMessage创建，请参考CreateMessage的介绍

## 使用CreateMessage创建消息

### 介绍

创建操作设备的消息PhoneMessage的java bean，然后通过MqttControl对象把消息发送出去

### 获取对象

通过该类的静态方法直接获取

```
public static CreateMessage getInstance() {
        ...
 }
```

### 音乐下一曲

创建播放下一首的消息，控制的是当前房间

#### 方法原型

```
/**
*
* 创建播放下一首的消息
*
* @return 下一曲的CreateMessage
*/
public PhoneMessage musicNext();
```

### 音乐播放暂停

创建控制音乐播放暂停的消息，控制的是当前房间

### 方法原型

```
/**
* 创建播放暂停的消息
*
* @return 播放暂停的CreateMessage
*/
public PhoneMessage musicPlayOrPause();
```

### 音乐播放

创建控制音乐播放的消息，控制的是当前房间

#### 方法原型

```
/**
* 创建播放的消息
*
* @return 播放的CreateMessage
*/
public PhoneMessage musicPlay();
```

### 音乐暂停

创建控制音乐暂停的消息，控制的是当前房间

#### 方法原型

```
/**
* 创建暂停的消息
*
* @return 暂停的CreateMessage
*/
public PhoneMessage musicPause()
```

### 音乐上一首

创建控制音乐上一首的消息，控制的是当前房间

#### 方法原型

```
/**
 * 创建播放上一首的消息
 *
 * @return 上一曲的CreateMessage
 */
public PhoneMessage musicPre();
```

### 设置房间

设置当前控制的房间，此方法只有双分区的才有用

#### 方法原型

```
/**
 * 设置房间
 *
 * @param area 设置的房间   11:房间一   12:房间二    13:同步
 * @return 设置的CreateMessage
 */
public PhoneMessage musicArea(int area);
```

#### 参数介绍

* area：设置的房间号,CreateMEssage的常量

| 房间  | 参数名       | 参数值 |
| --- | --------- | --- |
| 区域一 | AREA1     | 11  |
| 区域二 | AREA2     | 12  |
| 同步  | AREA\_SYN | 13  |

### 设置意图音源

设置意图音源，可以用来控制音乐主机的页面，控制的是当前房间

#### 方法原型

```
/**
 * 设置意图音源
 *
 * @param flag 意图音源
 * @return 设置意图音源的CreateMessage
 */
public PhoneMessage musicFlag(int flag)
```

#### 参数介绍

* flag：需要设置的意图音源，参数如下

```
public static final int AREA_SYN = 13;//一键同步
public static final int FLG_LOCAL_MUSIC = 0;//本地
public static final int FLG_LOCAL_SD = 1;//tf
public static final int FLG_LOCAL_USB = 2;//usb
public static final int FLG_LOCAL_AUX1 = 3;//aux
public static final int FLG_local_dlna = 4;//dlna
public static final int FLG_LOCAL_BT = 5;//bt
public static final int FLG_LOCAL_FAVORITE = 6;//我的收藏
public static final int FLG_Local_XMLY = 7;//喜马拉雅
public static final int FLG_Local_All_MUSIC = 8;//所有音乐
public static final int FLG_Local_HISTORY = 9;//播放历史
public static final int FLG_Local_SEARCH = 10;//音乐搜索
public static final int FLG_LOCAL_SCENE = 11;//场景音乐
public static final int FLG_RTSP = 12;//声音共享
public static final int FLG_LOCAL_FM = 13;//收音机
public static final int FLG_NO_SOURCE = 14;//无音源
public static final int FLG_CLOUD_MUSIC = 15;//云音乐
public static final int FLG_AIRPLAY = 16;//AirPlay
public static final int FLG_NET_CHILD=17;//儿童
```

### 声音减少

把音乐主机的音量减少1，控制的是当前房间

#### 方法原型

```
/**
 * 声音减少
 *
 * @return 声音减少的CreateMessage
 */
public PhoneMessage volumeMinus();
```

### 声音增加

把音乐主机的音量增加1，控制的是当前房间

#### 方法原型

```
/**
 * 声音增加
 *
 * @return 声音增加的CreateMessage
 */
public PhoneMessage volumeAdd()
```

### 使用位置播放歌曲

播放主机当前列表的position首歌曲，控制的是当前房间

#### 方法原型

```
/**
 * 使用位置播放歌曲
 *
 * @param position 歌曲的位置
 * @return 使用位置播放歌曲的CreateMessage
 */
public PhoneMessage playMusicPosition(int position)
```

#### 参数介绍

* position：需要播放歌曲的位置

### 使用音乐ID播放歌曲

使用音乐的ID，播放当前列表的歌曲，控制的是当前房间

#### 方法原型

```
/**
 * 使用ID播放歌曲
 *
 * @param id 歌曲的ID
 * @return 使用ID播放歌曲的CreateMessage
 */
public PhoneMessage playMusicID(int id):
```

#### 参数介绍

* id：需要播放歌曲的音乐ID

### EQ模式

创建设置播放器EQ模式的CreateMessage，控制的是当前房间

#### 方法原型

```
/**
 * 设置EQ模式
 *
 * @param eqMode EQ模式
 * @return 设置EQ模式的CreateMessage
 */
public PhoneMessage musicEqMode(int eqMode)
```

#### 参数介绍

eqMode：需要设置的EQ模式

| 模式 | 值（int） |
| -- | ------ |
| 普通 | 0      |
| 经典 | 1      |
| 爵士 | 2      |
| 摇滚 | 3      |
| 流行 | 4      |

### 播放模式

创建设置播放模式的CreateMessage，控制的是当前房间

#### 方法原型

```
/**
 * 设置播放模式
 *
 * @param playMode 播放模式
 * @return 设置播放模式的CreateMessage
 */
public PhoneMessage musicPlayMode(int playMode);
```

#### 参数介绍

* playMode：设置的播放模式

| 播放模式 | 值（int） |
| ---- | ------ |
| 顺序播放 | 0      |
| 随机播放 | 1      |
| 单曲循环 | 2      |
| 循环播放 | 3      |

### 收藏音乐

创建收藏当前播放音乐的CreateMessage，收藏的是当前房间的音乐

#### 方法原型

```
/**
 * 收藏音乐
 *
 * @return 收藏的CreateMessage
 */
public PhoneMessage musicFavorite();
```

### 下载歌曲

创建下载当前播放音乐的CreateMessage，下载的是当前房间的音乐

#### 方法原型

```
/**
 * 下载歌曲
 *
 * @return 下载消息的CreateMessage
 */
public PhoneMessage musicDownload();
```

### 设置播放进度

创建设置播放进度的CreateMessage，设置的是当前房间的音乐

#### 方法原型

```
/**
 * 设置播放进度
 *
 * @param seek 播放进度
 * @return 设置播放进度的CreateMessage
 */
public PhoneMessage musicSeek(int seek)
```

#### 参数介绍

* seek：设置播放进度的时间，毫秒

### 设置设备名

设置机器的名称，同时也是区域一的名称

#### 方法原型

```
/**
 * 设置设备名
 *
 * @param deviceName 设备名
 * @return 设置设备名的CreateMessage
 */
public PhoneMessage deviceName(String deviceName);
```

#### 参数介绍

* deviceName：需要设置的设备名

### 设置房间名

创建设置房间名的消息，设置房间二的名称需要双分区才会有作用

#### 方法原型

```
/**
 * 设置房间名
 *
 * @param room     需要设置的房间
 * @param roomName 设置的房间名
 * @return 设置房间名的CreateMessage
 */
public PhoneMessage roomName(int room, String roomName);
```

#### 参数介绍

* room：需要修改的房间名的房间

| 房间  | 参数名   | 参数值 |
| --- | ----- | --- |
| 区域一 | AREA1 | 11  |
| 区域二 | AREA2 | 12  |

* roomName：修改的房间名

### 修改蓝牙名和密码

创建修改蓝牙名称和密码的消息，蓝牙名和密码，可以一个为空，不可两个都为空

#### 方法原型

```
/**
 * 修改蓝牙名和密码
 *
 * @param btName 蓝牙名称，可以为空，为空表示不修改
 * @param btPwd  蓝牙密码，可以为空，为空表示不修改
 * @return 设置蓝牙名称和密码的CreateMessage
 */
public PhoneMessage btNameAndPwd(String btName, String btPwd);
```

#### 参数介绍

* btName：新的蓝牙名，可以为空，为空表示不修改
* btPwd：新的蓝牙密码，可以为空，为空表示不修改

### 连接WiFi

创建控制音乐主机连接WiFi的消息

#### 方法原型

```
/**
 * 连接WiFi
 *
 * @param wifiName WiFi名
 * @param wifiPwd WiFi密码
 * @return 连接WiFi的CreateMessage
 */
public PhoneMessage connWiFiInfo(@NonNull String wifiName, String wifiPwd);
```

#### 参数介绍

* wifiName：需要连接WiFi的名称，不可为空
* wifiPwd：需要连接WiFi的密码，无密码的可以直接为空

### 设置机器休眠时间

创建设置机器休眠时间的消息

#### 方法原型

```
/**
 * 设置机器休眠时间
 *
 * @param time 时间
 * @return 设置机器休眠时间的CreateMessage
 */
public PhoneMessage deviceSleepTime(int time);
```

#### 参数介绍

* time：机器休眠的时间，毫秒值，设置0为不休眠

### 控制设备开关机

创建控制设备开关机的消息，可以关机也可以开机

#### 方法原型

```
/**
 * 控制设备开关机
 *
 * @param isPower 开关机的状态   0 : 关机   1 : 开机
 * @return 控制设备开关机的CreateMessage
 */
public PhoneMessage devivePower(@NonNull int isPower);
```

#### 参数介绍

* isPower：控制开机还是关机

| 指令 | isPower（int） |
| -- | ------------ |
| 关机 | 0            |
| 开机 | 1            |

### 设置BASS音量

创建控制主机BASS音量的消息

#### 方法原型

```
/**
 * 设置BASS音量
 *
 * @param bassVolume BASS的音量
 * @return 设置BASS音量的CreateMessage
 */
public PhoneMessage musicBass(@NonNull int bassVolume);
```

#### 参数介绍

* bassVolume：设置BASS的音量，音量值为0\~15

### 设置TREBLE音量

创建控制主机TREBLE音量的消息

#### 方法原型

```
/**
 * 设置TREBLE音量
 *
 * @param trebleVolume TREBLE的音量
 * @return 设置TREBLE音量的CreateMessage
 */
public PhoneMessage musicTreble(@NonNull int trebleVolume);
```

#### 参数介绍

* trebleVolume：设置TREBLE的音量，音量值为0\~15

### 更新设备

当发现机器段有更新的时候可以通过这个方法更新音乐主机

#### 方法原型

```
/**
 * 更新设备
 *
 * @return 更新设备的CreateMessage
 */
public PhoneMessage deviceUpdate();
```

### 更新播放信息

通知播放器更新播放信息，机器段会发送消息到手机端来

#### 方法原型

```
/**
 * 更新播放信息
 *
 * @return 更新播放信息的CreateMessage
 */
public PhoneMessage updatePlayInfo()
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.youzhuan.net/ctrl-host/yun-dui-jie/jie-ru-zhi-nan/she-bei-kong-zhi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
