A-XLinkDeviceManager

一、XLinkDeviceManager

XLinkDeviceManager是设备维护管理类,所有设备的状态维护都通过这个类进行管理维护。通过XLinkSyncDeviceListTask任务同步的设备列表,默认会将设备添加设备管理列表中进行状态维护。

在设备管理维护中,设备可同时存在内网连接与云端连接两种连接方式,设备管理类也提供了相应的方法以便进行连接方式的切换或者更新。

  1. 以下方法说明中明确提供不推荐使用的方法,即为不建议开发者调用或者是开发者不应该进行任何数据修改。
  2. 以下文档中未提及的方法均属于不推荐使用的方法

二、Reference

以下为此类中关联的Class及相关说明

类名 类型 说明
XLinkConstant 常量类 所有常用的常量将存在于此类中,包括常用的flag和部分默认参数值,详情请查看API-XLinkConstant
XDevice 实体类 设备对象,SDK 中广泛使用的设备对象,详情请查看API-XDevice
XDevice.State 枚举类 设备状态,该类用于表示设备的连接状态,详情请查看API-XDevice中相关类

三、Methods

以下方法为开发过程常用的方法说明,参数说明及返回值说明。此处仅提供了推荐开发者使用及可能需要使用的方法,部分未列出方法请根据实际情况评估调用。

默认情况下,不推荐未列出的其它方法,即使是开放的方法,因为部分方法可能仅 SDK 内部使用。

1、addDeviceConnectionFlags

public boolean addDeviceConnectionFlags(String deviceTag, int flag)
  • 方法说明:

向已在维护列表中的设备添加新的连接策略,不影响原有的连接策略,注意当添加策略为XLinkConstant.FLAG_POLICY_NONE_CONNECTION时并不会有任何变更

注意连接策略是以 flag 的形式存在,多个 flag 是允许进行同时进行设置处理的,如:

XLinkDeviceManager.getInstance().addDeviceConnectionFlags(
    devTag,
    XLinkConstant.FLAG_POLICY_LOCAL_AUTO_CONNECTION|XLinkConstant.FLAG_POLICY_CLOUD_AUTO_CONNECTION
)
  • 参数说明:
参数名 类型 说明
deviceTag String 设备连接标识
flag int 连接策略flag,请参考常量类数据API-XLinkConstant
  • 返回值:boolean,添加结果存在该设备并添加成功时,返回 true,否则返回 false

2、removeDeviceConnectionFlags

public boolean removeDeviceConnectionFlags(String deviceTag, int flag)
  • 方法说明:

向已在维护列表中的设备移除掉指定的连接策略,注意当移除的策略为XLinkConstant.FLAG_POLICY_NONE_CONNECTION 时并不会有任何变更

  • 参数说明:
参数名 类型 说明
deviceTag String 设备连接标识
flag int 连接策略flag
  • 返回值:boolean,移除结果;存在该设备并移除成功时,返回 true,否则返回 false

3、setDeviceConnectionFlags

public boolean setDeviceConnectionFlags(String deviceTag, int flag)
  • 方法说明:

向已在维护列表中的设备设置连接策略,将覆盖掉原来的连接策略

  • 参数说明:
参数名 类型 说明
deviceTag String 设备连接标识
flag int 连接策略flag
  • 返回值:boolean,设置结果存在该设备并设置成功时,返回 true,否则返回 false

4、getDeviceConnectionFlag

public int getDeviceConnectionFlag(String devTag)
  • 方法说明:

获取设备的连接flag,用于标识该设备对象的连接策略

  • 参数说明:
参数名 类型 说明
devTag String 设备标识
  • 返回值:int,连接策略;返回设备连接策略flag

5、connectDevice

public boolean connectDevice(XDevice device, int flag)
  • 方法说明:

连接指定设备对象,指定连接策略进行连接,注意此处的连接策略会替换掉设备原有的连接策略

  • 参数说明:
参数名 类型 说明
device XDevice 设备对象
flag int 连接策略flag
  • 返回值:boolean,处理结果;设置存在返回 true,否则返回 false,注意返回 true 不表示设备已经连接成功,仅表示设备进行了连接处理
public boolean connectDevice(@NotNull String devTag, int flag)
  • 方法说明:

连接指定设备对象,指定连接策略进行连接,若给定的设备标识不存在维护列表中,则不会进行连接

  • 参数说明
参数名 类型 说明
devTag String 设备标识,不允许为 null
flag int 连接策略flag
  • 返回值:设备存在时返回 true,否则返回 false

6、disconnectDeviceCloud

public boolean disconnectDeviceCloud(@NotNull String devTag)
  • 方法说明:

断开设备的云端连接,此方法不会影响内网连接并且不会移除设备。注意如果需要移除设备应该使用XLinkRemoveDeviceTask而不应该直接调用此方法

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,不允许为 null
  • 返回值:boolean,处理结果;若设备存在尝试进行处理返回 true, 否则返回 false, 注意返回 true 不代表着已经成功断开连接

7、disconnectDeviceLocal

public boolean disconnectDeviceLocal(@NotNull String devTag)
  • 方法说明:

断开设备的内网连接,此方法不会影响云端连接并且不会移除设备。注意如果需要移除设备应该使用XLinkRemoveDeviceTask而不应该直接调用此方法

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,不允许为 null
  • 返回值:boolean,处理结果;若设备存在尝试进行处理返回 true, 否则返回 false, 注意返回 true 不代表着已经成功断开连接

8、containsKey

public boolean containsKey(@Nullable String devTag)
  • 方法说明:

检测设备管理列表中是否包括当前的设备

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:boolean,查找结果;若设备管理列表中包含此设备则返回 true,否则返回 false

9、getDevice

@Nullable
public XDevice getDevice(@Nullable String devTag)
  • 方法说明:

获取当前设备标识对应的设备

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:XDevice,查找的设备对象;返回设备对象若设备管理列表中存在该设备,返回值可能为 null

10、removeDevice

@Nullable
public String removeDevice(XDevice item)
  • 方法说明:

移除维护的设备对象,断开设备所有连接,清除设备数据

  • 参数说明:
参数名 类型 说明
item XDevice 设备对象
  • 返回值:String,设备标识;当设备不为 null时,移除设备并返回设备标识,否则返回 null

11、removeDeviceByDevTag

@Nullable
public XDevice removeDeviceByDevTag(String devTag)
  • 方法说明:

若该设备存在设备管理列表中,从设备管理列表中移除设备,断开设备所有连接并清除设备的数据

  • 参数说明
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:XDevice,设备对象;当设备存在时,返回被移除的设备对象,当设备不存在时,返回 null;

12、getDeviceLocalState

@NotNull
public XDevice.State getDeviceLocalState(String devTag)
  • 方法说明:

获取设备内网连接状态,若设备不存在时,返回 DISCONNECT

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:XDevice.State,设备状态;

13、getDeviceCloudState

@NotNull
public XDevice.State getDeviceLocalState(String devTag)
  • 方法说明:

获取设备云端连接状态,若设备不存在时,返回 DISCONNECT

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:XDevice.State,设备状态;

14、getDeviceConnectedState

@NotNull
public XDevice.State getDeviceConnectedState(String devTag)
  • 方法说明:

获取设备的连接状态,当内网或云端已连接时都返回 CONNECTED,当内网或云端任一处于连接中时都返回 CONNECTING,否则返回 DISCONNECT

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:XDevice.State,设备状态;

15、isDeviceConnected

public boolean isDeviceConnected(String deviceTag)
  • 方法说明:

判断指定设备的连接状态是否为 CONNECTED

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:boolean,判断结果;若设备已连接返回 true,否则返回 false

16、isDeviceCloudConnected

public boolean isDeviceCloudConnected(String deviceTag)
  • 方法说明:

判断指定设备的云端连接状态是否为 CONNECTED

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:boolean,判断结果;若设备云端状态为已连接返回 true,否则返回 false

17、isDeviceLocalConnected

public boolean isDeviceLocalConnected(String deviceTag)
  • 方法说明:

判断指定设备的内网连接状态是否为 CONNECTED

  • 参数说明:
参数名 类型 说明
devTag String 设备标识,允许为 null
  • 返回值:boolean,判断结果;若设备内网状态为已连接返回 true,否则返回 false

18、getDeviceFromMacAddress

@Nullable
public XDevice getDeviceFromMacAddress(String macAddress)
  • 方法说明:

根据 mac 地址从设备管理列表中查找对应的设备,若查找不到返回 null

  • 参数说明:
参数名 类型 说明
macAddress String 设备 mac 地址
  • 返回值:XDevice,设备对象;若参数为 null 或查找不到该设备,则返回 null

19、getDeviceFromDeviceId

@Nullable
public XDevice getDeviceFromDeviceId(int deviceId)
  • 方法说明:

根据设备ID从设备管理列表中查找对应的设备,若查找不到返回 null

  • 参数说明:
参数名 类型 说明
deviceId int 设备id
  • 返回值:XDevice,设备对象;若参数为 null 或查找不到该设备,则返回 null

20、addDeviceStateListener

public void addDeviceStateListener(XLinkDeviceStateListener listener)
  • 方法说明:

添加设备状态监听回调,若参数为 null 则不会添加

  • 参数说明:
参数名 类型 说明
listener XLinkDeviceStateListener 设备状态监听回调
  • 返回值:void

21、removeDeviceStateListener

public void removeDeviceStateListener(XLinkDeviceStateListener listener)
  • 方法说明:

移除设备状态监听回调

  • 参数说明:
参数名 类型 说明
listener XLinkDeviceStateListener 设备状态监听回调
  • 返回值:void

四、更新日志

日期 更新内容
2018-08-22 初稿,自 X-MQTT SDK v6.2版本起
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题