> 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/dev-link-host/android-link-sdk/she-bei-fa-xian.md).

# 设备发现

### 运行流程图

![](/files/-MEVoHZw-npM4IJsqaGq)

### 调用方法（discoverAppliance）

智能主机需要获取设备信息时,将会触发discoverAppliance方法

```java
@Override
public void discoverAppliance(String param) {
    //实例化一个设备对象
    Appliance appliance = new Appliance();
    //设置设备的唯一Id值
    appliance.setApplianceIdByInt(1);
    //设置设备名称
    appliance.setDeviceName(1+"灯");
    //设置设备类型
    appliance.setApplianceTypes(YzDevType.LIGHT);
    //设置支持的操作
    appliance.setActions(YzDevAction.turnOn,YzDevAction.turnOff);
    //添加到集合中
    virtualDevice.add(appliance);
    //获取设备完成后调用notifyHost 通知Action为 GET_DEVICE_SUCCESS,返回设备信息
    notifyHost(SdkAction.GET_DEVICE_SUCCESS, JSON.toJSONString(virtualDevice));
}
```

### Appliance设备对象

Appliance是设备对象,用于描述设备的信息,需要将不同的三方设备对象转换为此对象后再通过notifyHost通知主机更新数据

```java
public class Appliance  {
    //设备ID
    /**设备唯一ID*/
    private String applianceId;
    //设备具有的操作类型
    /**设备具有的操作类型*/
    private String[] actions;
    //设备的类型
    /**设备的类型*/
    private String[] applianceTypes;
    //设备名
    /**设备名*/
    private String deviceName;
    //厂商名
    /**厂商名*/
    private String manufacturerName;
    //如果具有自己的图标的话用该字段（可选,无值默认使用对应类型的本地图标）
    //图片URL链接
    /**如果具有自己的图标的话用该字段（可选,无值默认使用对应类型的本地图标）
     图片URL链接*/
    private String icon;
    //设备型号
    /**设备型号*/
    private String model;
    //设备型号名称
    /**设备型号名称*/
    private String modelName;
    //设备区域名称例如 （客厅,厨房）,如果此字段为空则可能赋予默认的值
    /**设备区域名称例如 （客厅,厨房）,如果此字段为空则可能赋予默认的值*/
    private String zone = "客厅";
    //设备楼层名称例如 （1楼,2楼）,如果此字段为空则可能赋予默认的值
    /**设备楼层名称例如 （1楼,2楼）,如果此字段为空则可能赋予默认的值*/
    private String floor = "1楼";
    //设备属性K - V
    /**设备属性K - V*/
    private JSONObject attributes;
    //补充字段
    /**补充字段*/
    private JSONObject additionalApplianceDetails;
    }
```

### 获取设备成功

由于设备加载时的时间长短不一,因此需要开发者在设备搜索完成后,自行发送通知获取设备成功的消息

SdkAction.[GET\_DEVICE\_SUCCESS ](/dev-link-host/android-link-sdk/action-shi-jian.md#get_device_success)\
获取成功

SdkAction.[GET\_DEVICE\_FAIL](/dev-link-host/android-link-sdk/action-shi-jian.md#get_device_fail)\
获取失败

数据：数组类型Appliance

```java
 notifyHost(SdkAction.GET_DEVICE_SUCCESS, JSON.toJSONString(virtualDevice));
```
