> For the complete documentation index, see [llms.txt](https://doc.youzhuan.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.youzhuan.net/ctrl-host/yun-dui-jie/jie-ru-zhi-nan/huo-qu-she-bei.md).

# 设备管理

## 获取所有设备

### 介绍

登录成功后可以获取登录账号下面的所有设备

### 方法原型

```
/**
* 获取所有的设备
*
* @param phoneNumber 账号
* @param listener    注册结果监听
*/
public void requestAllDevice(@NonNull String phoneNumber, @NonNull final CloudUrlRequestListener listener)
```

### 调用

使用CloudUrlRequest对象调用

### 参数介绍

* phoneNumber：当前登录的账号
* listener：一个CloudUrlRequestListener对象

{% hint style="success" %}
请求成功调用CloudUrlRequestListener对象的onResponse(T response);方法，参数是一个List\<com.youzhuan.mqttclient.device.bean.Device>,包含账号下面所有的音乐主机
{% endhint %}

{% hint style="warning" %}
请求失败调用CloudUrlRequestListener对象的onFailure(int errType);方法，参数请求错误的错误码，详情请参考错误码
{% endhint %}

## com.youzhuan.mqttclient.device.bean.Device

### 源码

使用get方法获取内容

```
    private String deviceName;//设备名称
    private String deviceType;//设备类型
    private String deviceId;//设备ID
    private String callbackUrl;//设备callbackUrl
    private String topicUrl;//设备topicUrl
    private String sendTopic;//接收消息的Topic
    private String subscribeTopic;//发送消息的Topic
```

## 初始化SDK

### 获取MqttControlFactory对象

使用MqttControlFactory的静态方法getInstance()直接获取

```
public static MqttControlFactory getInstance(Context context);
```

### 初始化SDK

**获*****取所有设备成功后***，使用MqttControlFactory对象调用init();方法，初始化成功返回true

```
public boolean init();
```

### 获取MqttControl对象

可以通过该类直接控制设备

#### 获取对象

初始化SKD后可以直接获取该对象，由于机器可能连接在不同的服务器，需要音乐主机连接服务器的地址topicUrl，所以只能在获取到音乐主机对象（Device）后才能获取MqttControl对象

```
MqttContorl mqttContorl = MqttControlFactory.getInstance().getMqttContorl(device.getTopicUrl());
```

## 分享设备

### 介绍

通过此方法把一个设备分享给另外一个设备

### 方法原型

```
/**
* 分享设备
*
* @param phoneNumber 需要分享的账号
* @param listener    注册结果监听
*/
public void requestShareDevice(@NonNull String phoneNumber, final @NonNull CloudUrlRequestListener listener)
```

### 调用

使用CloudUrlRequest对象调用

### 参数介绍

* **phoneNumber：需要分享的账号**
* **listener：**&#x4E00;个CloudUrlRequestListener对象

{% hint style="success" %}
分享成功调用CloudUrlRequestListener对象的onResponse(T response);方法，参数是一个ShareDeviceBean的Java Bean对象
{% endhint %}

{% hint style="warning" %}
请求失败调用CloudUrlRequestListener对象的onFailure(int errType);方法，参数请求错误的错误码，详情请参考错误码
{% endhint %}

## 删除设备

### 介绍

通过这个方法可以把已经绑定的设备，取消绑定当前账号，让其他账号绑定

### 方法原型

```
 /**
 * 删除设备
 *
 * @param phoneNumber 登录的账号
 * @param sid         分享的分享id
 * @param deviceId    设备的ID
 * @param listener    监听事件
 */
public void requestRemoveDevice(@NonNull String phoneNumber, @NonNull String sid, @NonNull String deviceId, @NonNull final CloudUrlRequestListener listener)
```

### 调用

使用CloudUrlRequest对象调用

### 参数介绍

* **phoneNumber：当前登录的账号**
* **sid：分享设备的ID**
* **deviceId：音乐主机的设备ID**
* **listener：一个实现**CloudUrlRequestListener的对象，**监听删除账号是否成功**

{% hint style="success" %}
分享成功调用CloudUrlRequestListener对象的onResponse(T response);方法，参数是一个RemoveDeviceBean的Java Bean对象
{% endhint %}

{% hint style="warning" %}
请求失败调用CloudUrlRequestListener对象的onFailure(int errType);方法，参数请求错误的错误码，详情请参考错误码
{% endhint %}

## 绑定设备

### 介绍

通过此方法可以把，一台没有绑定的机器绑定到账号，需要扫描机器段二维码的信息

### 方法原型

```
/**
* 绑定设备
* @param scanDeviceBean   机器端二维码的信息
* @param bindDeviceStatus 绑定设备状态监听器
*/
public void bindDevice(@NonNull final ScanDeviceBean scanDeviceBean,@NonNull final BindDeviceStatus bindDeviceStatus)
```

### 调用

使用ScanDeviceBean中的topicUrl地址获取MqttControl对象，通过MqttControl对象调用bindDevice方法

### 参数介绍

* scanDeviceBean：机器端二维码信息的Java bean对象，扫描二维码后使用该对象解析
* bindDeviceStatus：一个实现BindDeviceStatus的对象，作为回调对象

{% hint style="success" %}
绑定成功后会回调bindDeviceStatus对象的bindSuccess();方法
{% endhint %}

{% hint style="warning" %}
绑定失败后会回调bindDeviceStatus对象的bindFailure();方法
{% endhint %}
