局域网设备
更新时间:2025-07-22 18:35:15
信息
发现局域网设备,发现了多个设备会有一个设备列表,从设备列表选择一台设备进行连接,监听连接状态,连接成功后则可进行播放或获取网关设备的子设备进行播放
object LanDeviceLinkMgr {
/**
* 搜索局域网设备
*
* @param onResultListener 如果搜索到多个设备,会多次触发回调
*/
fun searchLanDevice(onResultListener: OnResultListener<LanDeviceInfo>)
/**
* 停止搜索局域网设备
*
*/
fun stopSearch()
/**
* 设备连接设备状态监听
*
* @param connectStateListener
*/
fun setOnDeviceConnectStateListener(connectStateListener: OnResultListener<Boolean>)
/**
* 连接设备
*
* @param deviceInfo 局域网设备[DeviceInfo]
*/
fun connectDevice(deviceInfo: DeviceInfo)
/**
* 断开设备连接
*
*/
fun disConnectDevice()
/**
* 网关设备获取子设备 需要先连接设备
*
* @param
* @return
*/
fun getSubDeviceList(productKey: String, deviceName: String, onResultListener: OnResultListener<List<LanDeviceInfo>>)
/**
* 退出局域网连接时请务必调用
*
*/
fun exitLanLink()
}
发现设备
发现设备可能会有多个设备响应,回调可能多多次触发,UI请使用列表展示
示例
private void getDeviceList() {
showLoading(true);
//回调可能会多次触发
LanDeviceLinkMgr.searchLanDevice(new OnResultListener<>() {
@Override
public void onResult(LanDeviceInfo result) {
mDeviceListAdapter.addItem(result);
hideLoading();
}
@Override
public void onError(@NonNull IoTSDKError error) {
showToast(error.toString());
binding.rvDeviceList.setVisibility(View.GONE);
binding.tvNoDeviceTip.setVisibility(View.VISIBLE);
hideLoading();
}
});
}
停止发现设备
示例
LanDeviceLinkMgr.stopSearch()
设置设备连接监听
示例
mDeviceListAdapter.setOnItemClickListener(new OnItemClickListener<DeviceInfo>() {
@Override
public void onClick(DeviceInfo item, int position) {
LanDeviceLinkMgr.setOnDeviceConnectStateListener(new OnResultListener<Boolean>() {
@Override
public void onResult(Boolean result) {
if (result) { //连接成功
if (isVisibility) {
DeviceNodeTypeEnum nodeType = DeviceNodeTypeEnum.valueOf(item.getNodeType());
if (nodeType == DeviceNodeTypeEnum.GATEWAY) {
LanDeviceChildListActivity.callActivity(LanDeviceListActivity.this, item);
} else {
LanDevicePlayActivity.callActivity(LanDeviceListActivity.this, item);
}
}
} else { // 连接断开
showToast(R.string.common_cant_connect);
Intent intent = new Intent(LanDeviceListActivity.this, LanDeviceListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
@Override
public void onError(@NonNull IoTSDKError error) {
showToast(R.string.common_cant_connect);
}
});
LanDeviceLinkMgr.connectDevice(item);
}
});
连接设备
示例
mDeviceListAdapter.setOnItemClickListener(new OnItemClickListener<DeviceInfo>() {
@Override
public void onClick(DeviceInfo item, int position) {
LanDeviceLinkMgr.setOnDeviceConnectStateListener(new OnResultListener<Boolean>() {
@Override
public void onResult(Boolean result) {
if (result) { //连接成功
if (isVisibility) {
DeviceNodeTypeEnum nodeType = DeviceNodeTypeEnum.valueOf(item.getNodeType());
if (nodeType == DeviceNodeTypeEnum.GATEWAY) {
LanDeviceChildListActivity.callActivity(LanDeviceListActivity.this, item);
} else {
LanDevicePlayActivity.callActivity(LanDeviceListActivity.this, item);
}
}
} else { // 连接断开
showToast(R.string.common_cant_connect);
Intent intent = new Intent(LanDeviceListActivity.this, LanDeviceListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
@Override
public void onError(@NonNull IoTSDKError error) {
showToast(R.string.common_cant_connect);
}
});
LanDeviceLinkMgr.connectDevice(item);
}
});
断开设备连接
设备连接成功后,断开设备连接。释放资源
示例
LanDeviceLinkMgr.disConnectDevice()
获取网关子设备
如果发现的是一个NVR设备,并连接成功,则可获取网关设备下挂的子设备
示例
private void getDeviceList() {
showLoading(true);
LanDeviceLinkMgr.getSubDeviceList(mDeviceInfo.getProductKey(), mDeviceInfo.getDeviceName(), new OnResultListener<>() {
@Override
public void onResult(List<LanDeviceInfo> result) {
mDeviceListAdapter.setDataList(new ArrayList<>(result));
hideLoading();
}
@Override
public void onError(@NonNull IoTSDKError error) {
showToast(error.toString());
hideLoading();
}
});
}