设备分组
更新时间:2026-08-06 11:13:06
对用户下的设备进行分组管理
import com.polaris.iot.appsdk.libapiclient.callback.IoTCallback
import com.polaris.iot.appsdk.libuserdevicemgr.model.GroupListRsp
/**
* 设备分组
*/
object IDeviceGroupMgr {
/**
* 创建分组
*
* @param name 分组名称
* @param iotIdList 设备ID列表 可选
* @param ioTCallback
* @param homeId 家庭ID 可选
*/
fun groupCreate(name: String, iotIdList: List<String>?, ioTCallback: IoTCallback, homeId: Long? = null)
/**
* 删除分组
*
* @param groupId 分组ID
* @param ioTCallback
*/
fun groupDelete(groupId: Long, ioTCallback: IoTCallback)
/**
* 更新分组名称
*
* @param groupId 分组ID
* @param name 分组名称
* @param ioTCallback
*/
fun groupUpdate(groupId: Long, name: String, ioTCallback: IoTCallback)
/**
* 分组列表
*
* @param pageNo 页码
* @param pageSize 每页数量 最大20
* @param ioTCallback [GroupListRsp]
* @param homeId 家庭ID 可选
*/
fun groupList(pageNo: Int, pageSize: Int, ioTCallback: IoTCallback, homeId: Long? = null)
/**
* 分组添加设备
*
* @param groupId groupId 分组ID
* @param iotIdList 设备ID列表
* @param ioTCallback
*/
fun groupAddDevice(groupId: Long, iotIdList: List<String>, ioTCallback: IoTCallback)
/**
* 分组删除设备
*
* @param groupId groupId 分组ID
* @param iotIdList 设备ID列表
* @param ioTCallback
*/
fun groupDeleteDevice(groupId: Long, iotIdList: List<String>, ioTCallback: IoTCallback)
/**
* 创建家庭
*
* @param name 家庭名称
* @param groupList 新建分组列表 (可选)
* @param ioTCallback
*/
fun homeManagerCreate(name: String, groupList: List<String>?, ioTCallback: IoTCallback)
/**
* 删除家庭
*
* @param homeId 家庭ID
* @param ioTCallback
*/
fun homeManagerDelete(homeId: Long, ioTCallback: IoTCallback)
/**
* 家庭列表
*
* @param pageNo 页码
* @param pageSize 每页数量
* @param ioTCallback [HomeListRsp]
*/
fun homeManagerList(pageNo: Int, pageSize: Int, ioTCallback: IoTCallback)
/**
* 更新家庭信息 (仅支持修改名称)
*
* @param homeId 家庭ID
* @param name 家庭名称
* @param ioTCallback
*/
fun homeManagerUpdate(homeId: Long, name: String, ioTCallback: IoTCallback)
}
创建分组
/**
* 创建分组
*
* @param name 分组名称
* @param iotIdList 设备ID列表 可选
* @param ioTCallback
*/
fun groupCreate(name: String, iotIdList: List<String>?, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.groupCreate(groupName, selectedIotList, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast(R.string.tip_operate_failed);
hideLoading();
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
hideLoading();
showToast(R.string.tip_operate_success);
finish();
}
});
删除分组
/**
* 删除分组
*
* @param groupId 分组ID
* @param ioTCallback
*/
fun groupDelete(groupId: Long, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.groupDelete(mGroupInfo.getGroupId(), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
hideLoading();
showToast(R.string.tip_operate_failed);
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
finish();
}
});
更新分组名称
/**
* 更新分组名称
*
* @param groupId 分组ID
* @param name 分组名称
* @param ioTCallback
*/
fun groupUpdate(groupId: Long, name: String, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.groupUpdate(mGroupInfo.getGroupId(), groupName, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast(R.string.tip_group_name_failed);
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
}
});
分组列表
/**
* 分组列表
*
* @param pageNo 页码
* @param pageSize 每页数量 最大20
* @param ioTCallback [GroupListRsp]
*/
fun groupList(pageNo: Int, pageSize: Int, ioTCallback: IoTCallback)
示例
private void getGroupList() {
DeviceGroupMgr.groupList(1, 20, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast(R.string.error_api_failed);
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
GroupListRsp rsp = (GroupListRsp) response.getData();
assert rsp != null;
mGroupList = rsp.getItems();
List<CommonListItem> list = new ArrayList<>();
for (GroupInfo groupInfo : mGroupList) {
String label = groupInfo.getName();
list.add(new CommonListItem(label, "", "", String.valueOf(groupInfo.getGroupId()), true));
}
ThreadManage.runOnUiThread(new Runnable() {
@Override
public void run() {
mCommonListAdapter.setDataList(list);
}
});
}
});
}
GroupListRsp及GroupInfo
/**
* Group info
*
* @property groupId 分组ID
* @property name 分组名称
* @property deviceCount 分组下设备数
* @constructor Create empty Group info
*/
data class GroupInfo(
val groupId: Long,
var name: String,
var deviceCount: Int = 0
) : Serializable
/**
* 设备分组列表返回
*
* @property total 总数
* @property pageNo 页码
* @property pageSize 每页数量
* @property items 返回记录数
* @constructor Create empty Group list rsp
*/
data class GroupListRsp(
var total: Int,
val pageNo: Int,
val pageSize: Int,
val items: List<GroupInfo>
)
分组添加设备
/**
* 分组添加设备
*
* @param groupId groupId 分组ID
* @param iotIdList 设备ID列表
* @param ioTCallback
*/
fun groupAddDevice(groupId: Long, iotIdList: List<String>, ioTCallback: IoTCallback)
示例
private void doAddGroupDevice(List<String> addIotList) {
IoTCallback callback = new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast(R.string.tip_group_device_add_failed);
hideLoading();
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
hideLoading();
showToast(R.string.tip_modify_success);
finish();
}
};
if (addIotList.isEmpty()) {
callback.onResponse(null, null);
return;
}
DeviceGroupMgr.groupAddDevice(mGroupInfo.getGroupId(), addIotList, callback);
}
分组删除设备
/**
* 分组删除设备
*
* @param groupId groupId 分组ID
* @param iotIdList 设备ID列表
* @param ioTCallback
*/
fun groupDeleteDevice(groupId: Long, iotIdList: List<String>, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.groupDeleteDevice(mGroupInfo.getGroupId(), removeIotList, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast(R.string.tip_group_device_del_failed);
doAddGroupDevice(addIotList);
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
doAddGroupDevice(addIotList);
}
});
创建家庭
/**
* 创建家庭
*
* @param name 家庭名称
* @param groupList 新建分组列表 (可选)
* @param ioTCallback
*/
fun homeManagerCreate(name: String, groupList: List<String>?, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.homeManagerCreate(homeName, selectedGroupNameList, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
hideLoading();
showToast("[" + exception.getCode() + "]" + getString(R.string.tip_operate_failed));
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
hideLoading();
showToast(R.string.tip_operate_success);
finish();
}
});
删除家庭
/**
* 删除家庭
*
* @param homeId 家庭ID
* @param ioTCallback
*/
fun homeManagerDelete(homeId: Long, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.homeManagerDelete(mHomeInfo.getHomeId(), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
hideLoading();
showToast("[" + exception.getCode() + "]" + getString(R.string.tip_operate_failed));
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
DeviceGroupMgr.homeManagerCreate(homeName, selectedGroupNameList, callback);
}
});
家庭列表
/**
* 家庭列表
*
* @param pageNo 页码
* @param pageSize 每页数量
* @param ioTCallback [HomeListRsp]
*/
fun homeManagerList(pageNo: Int, pageSize: Int, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.homeManagerList(1, 20, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast(R.string.error_api_failed);
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
HomeListRsp rsp = (HomeListRsp) response.getData();
if (rsp != null) {
mHomeList = rsp.getItems();
List<CommonListItem> list = new ArrayList<>();
if (mHomeList != null) {
for (HomeInfo homeInfo : mHomeList) {
String desc = "家庭ID:" + homeInfo.getHomeId() + (homeInfo.isDefault() ? " (默认)" : "");
list.add(new CommonListItem(homeInfo.getName(), desc, "", String.valueOf(homeInfo.getHomeId()), true));
}
}
if (getActivity() != null) {
getActivity().runOnUiThread(() -> mCommonListAdapter.setDataList(list));
}
}
}
});
HomeListRsp及HomeInfo
/**
* Home info
*
* @property homeId 家庭ID
* @property name 家庭名称
* @property isDefault 是否是默认家庭
* @constructor Create empty Home info
*/
data class HomeInfo(
val homeId: Long,
var name: String,
val isDefault: Boolean = false
) : Serializable {
var deviceCount: Int = 0
var groupList: List<GroupInfo>? = null
}
/**
* 家庭列表返回
*
* @property total 总数
* @property pageNo 页码
* @property pageSize 每页数量
* @property items 返回记录数
* @constructor Create empty Home list rsp
*/
data class HomeListRsp(
var total: Int,
val pageNo: Int,
val pageSize: Int,
val items: List<HomeInfo>
)
更新家庭信息
/**
* 更新家庭信息 (仅支持修改名称)
*
* @param homeId 家庭ID
* @param name 家庭名称
* @param ioTCallback
*/
fun homeManagerUpdate(homeId: Long, name: String, ioTCallback: IoTCallback)
示例
DeviceGroupMgr.homeManagerUpdate(mHomeInfo.getHomeId(), homeName, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
hideLoading();
showToast("[" + exception.getCode() + "]" + getString(R.string.tip_operate_failed));
}
@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
hideLoading();
showToast(R.string.tip_operate_success);
finish();
}
});