房间信息管理

更新时间:2024-08-28 01:53:48下载pdf

本文介绍房间管理相关的功能,包括创建房间、修改房间、移除房间等,管理房间中的设备、群组绑定关系,注册监听来接收房间维度的事件回调。房间管理对应 FamilyManagerCoreKit.getRoomUseCase(),调用接口来实现对单个房间的操作。

新增房间

在指定家庭下添加房间,您需要传入房间名和家庭 ID。创建成功后调用 callback 回调房间模型。

接口说明

void addRoom(long homeId, String name,
IFamilyDataCallback<BizResponseData<TRoomBean>> callback);

参数说明

参数 说明
name 待添加房间名
homeId 房间将要绑定到的家庭的 ID
callback 回调

调用示例

FamilyManagerCoreKit.getRoomUseCase().addRoom(0,"room1",object :IFamilyDataCallback<BizResponseData<TRoomBean>>{
            override fun onSuccess(result: BizResponseData<TRoomBean>?) {
                 val data = result?.data
            }

            override fun onError(errorCode: String?, errorMessage: String?) {

            }
        })

移除房间

将房间从家庭下移除,您需要传入房间 ID 和家庭 ID。移除成功后调用 callback 回调。

接口说明

void removeRoom(long homeId, long roomId,
                  IFamilyDataCallback<Boolean> callback);

参数说明

参数 说明
roomId 将要删除的房间 ID
homeId 房间所属的家庭 ID
callback 回调

调用示例

FamilyManagerCoreKit.getRoomUseCase().removeRoom(homeId, roomId, object:IFamilyDataCallback<Boolean>{
            override fun onSuccess(result: Boolean?) {

            }

            override fun onError(errorCode: String?, errorMessage: String?) {

            }
        });

修改房间名称

修改房间名称,传入新的房间名不能为空,修改成功后调用 callback 回调房间模型。

接口说明

void updateRoom(long roomId, String roomName,IFamilyDataCallback<Boolean> callback);

参数说明

参数 说明
roomName 将要修改的房间名
roomId 将要修改的房间 ID
callback 成功回调

调用示例

FamilyManagerCoreKit.getRoomUseCase().updateRoom(homeId, "xxx", object :IFamilyDataCallback<Boolean>{
            override fun onSuccess(result: Boolean?) {

            }

            override fun onError(errorCode: String?, errorMessage: String?) {

            }
        });

查询家庭下房间列表

查询家庭下的房间列表,传入对应的家庭 ID。成功后调用 callback 回调房间模型数组。

接口说明

void getRoomList(long homeId, boolean ignoreCache,IFamilyDataCallback<BizResponseData<List<TRoomBean>>> callback);

参数说明

参数 说明
homeId 家庭 ID
ignoreCache 是否使用缓存
  • true 则不使用缓存,每次都刷新接口返回。
  • false 则在有缓存数据的情况下,返回缓存数据。
success 成功回调

调用示例

val ignoreCache = false//

FamilyManagerCoreKit.getRoomUseCase().getRoomList(homeId, ignoreCache, object :IFamilyDataCallback<BizResponseData<List<TRoomBean>>>{
            override fun onSuccess(result: BizResponseData<List<TRoomBean>>?) {
                 val datalist = result?.data
            }

            override fun onError(errorCode: String?, errorMessage: String?) {

            }
        });

查询推荐房间名称

新增房间时,可以调用接口查询推荐的房间名称,调用 callback 返回房间名称列表。

接口说明

void getRecommendRoomList(int listType,IFamilyDataCallback<BizResponseData<List<RoomCheckBean>>> callback);

参数说明

参数 说明
listType 推荐的类型:
  • 添加家庭的默认推荐房间:IFamilyRoomUseCase.ROOM_LIST_DEFAULT
  • 添加房间的时候的推荐房间:IFamilyRoomUseCase.ROOM_LIST_RECOMMEND
callback 失败回调

调用示例

FamilyManagerCoreKit.getRoomUseCase().getRecommendRoomList(ROOM_LIST_DEFAULT,object :IFamilyDataCallback<BizResponseData<List<RoomCheckBean>>>{
            override fun onSuccess(result: BizResponseData<List<RoomCheckBean>>?) {

            }

            override fun onError(errorCode: String?, errorMessage: String?) {

            }
        })

对房间列表排序

对家庭下的房间列表排序,包含移动房间设备或群组(增加删除设备和群组),传入排序后的房间 ID,以及设置成功调用 callback 回调。

接口说明

void sortRoom(long homeId, List<Long> sortedIds,IFamilyDataCallback<Boolean> callback);

参数说明

参数 说明
homeId 房间所属的家庭 ID
sortedIds 将要设置排序的房间 ID 列表
callback 回调

调用示例

FamilyManagerCoreKit.getRoomUseCase().sortRoom(0, roomIds , object :IFamilyDataCallback<Boolean>{
            override fun onSuccess(result: Boolean?) {

            }

            override fun onError(errorCode: String?, errorMessage: String?) {

            }
        })

事件回调

IThingHomeRoomInfoChangeListener 是房间管理类的接口,注册监听可以接收房间新增,房间移除,设备和群组的房间关系变化事件回调。

家庭下房间和设备房间变更监听

IThingHomeRoomInfoChangeExListenerIThingHomeRoomInfoChangeListener 的扩展接口,新增房间名称变更,房间排序变更,具体房间 ID 下的设备新增或者删减,具体房间 ID 下的群组新增或者删减。

接口说明

public interface IThingHomeRoomInfoChangeListener {
       /**
     * the Room of Device Information Update.
     * <p>Such as name, etc.</p>
     *
     * @param devId The id of the device which you are listening to.
     */
    void onDeviceRoomInfoUpdate(String devId);

    /**
     * the Room of Group Information Update.
     * <p>Such as name, etc.</p>
     *
     * @param groupId The id of the Group which you are listening to.
     */
    void onGroupRoomInfoUpdate(Long groupId);

    /**
     * the Room of Information Update.
     * <p>Such as name, etc.</p>
     *
     * @param roomId The id of the Room which you are listening to.
     */
    void onRoomAdd(String homeId, Long roomId);

    /**
     * the Room of Information Update.
     * <p>Such as name, etc.</p>
     *
     * @param roomId The id of the Room which you are listening to.
     */
    void onRoomDelete(String homeId, Long roomId);
}
public interface IThingHomeRoomInfoChangeExListener extends IThingHomeRoomInfoChangeListener {
       /**
     * device been added or removed from room
     *
     * @param roomId room id
     * @param devId device id
     * @param add    add or not
     */
    void onDeviceRoomInfoChanged(long roomId, String devId, boolean add);

    /**
     * group been added or removed from room
     *
     * @param roomId room id
     * @param id     group id
     * @param add    add or not
     */
    void onGroupRoomInfoChanged(long roomId, long id, boolean add);

    /**
     * room name changed
     *
     * @param roomId   room id
     * @param name new room name
     */
    void onRoomNameChanged(long roomId, String name);

    /**
     * room order changed
     */
    void onRoomOrderChanged();
}

调用示例

val listener = object :IThingHomeRoomInfoChangeExListener{
            override fun onDeviceRoomInfoUpdate(devId: String?) {

            }

            override fun onGroupRoomInfoUpdate(groupId: Long?) {

            }

            override fun onRoomAdd(homeId: String?, roomId: Long?) {

            }

            override fun onRoomDelete(homeId: String?, roomId: Long?) {

            }

            override fun onDeviceRoomInfoChanged(roomId: Long, devId: String?, add: Boolean) {

            }

            override fun onGroupRoomInfoChanged(roomId: Long, id: Long, add: Boolean) {

            }

            override fun onRoomNameChanged(roomId: Long, name: String?) {

            }

            override fun onRoomOrderChanged() {

            }
        }
 //register HomeDeviceRoomlistener
  FamilyManagerCoreKit.registerHomeDeviceRoomListener(homeId,listener)

 //unregister HomeDeviceRoomlistener
  FamilyManagerCoreKit.unregisterHomeDeviceRoomListener(homeId,listener)