1.1. 主要类介绍

1.1.1. JdSmartAccount

提供用户登陆智能主机使用。 setName()表示当前登陆的用户名,如果登陆成功,则赋值,如果退出登陆,则设为空字串""

1.1.2. JdSmartHostInfo

//设定是否支持用户登陆,如果支持则写true,系统提供登录页面(桌面-设置-智能家具设置-智能主机管理(admin),进入登录页面), 否则false(如自行创建的二维码扫码登录)
void setSupportLogin(boolean supportLogin) 
//登陆提示信息,如果支持登陆,则生效。建议写品牌名
void setLoginPrompt(String loginPrompt) 
/*
 * 设定是否使能场景编辑,默认为true
 * 若为false, 则只支持获取场景名,和执行场景,仅需实现getScenes和controlScene两个接口
 * 若为true, 则支持场景所有功能,包括场景编辑、执行、场景绑定,需要实现所有场景相关接口
 */
void setEnableSceneEdit(boolean enable)   
//是否支持查看传感器类设备报警记录
void setShowSensorDetail(boolean showSensorDetail)
//是否支持选择家庭
void setEnableSelectFamily(boolean enableSelectFamily)
//设置当前选中家庭名称
void setCurFamilyName(String curFamilyName)
//设置登录类型
void setLoginType(String loginType)
//设置登录时的相关参数,如果没有可不设置
void setLoginParas(JdSmartLoginParas loginParas)
/* 
 * 设置版本号,可以直接设为3,也支持12
 * 设为1,表示支持在进入房间管理页前显示登录状态页(如果已登录成功,会跳过登录状态页,直接进入房间管理页)
 * 设为2,支持授权的方式登录
 * 设为3,支持显示设备离线在线状态
 */
void setVersion(int version)

1.1.3. JdSmartDevice

抽像表示一个智能设备

//设备唯一标识
setDeviceId() 
//设备类型
setDeviceType() 
/*    
*    设备子类型 如果设备是红外设备,需要另外设置为子类型JdSmartDeviceType.DEVICE_SUB_TYPE_IR
*    如果是多功能控制盒设备,需要另外设置为子类型JdSmartDeviceType.DEVICE_SUB_TYPE_CONTROL_BOX
*/
setDeviceSubType()
/*
*    如果是红外设备,设置此设备已学过的红外键列表,键值分隔符为","
*    例如,电视机已经学习了开关,静音键,则这样调用setJdIRkeyList(JdSmartIRConstant.IR_KEY_TV_ON+"," +       JdSmartIRConstant.IR_KEY_TV_OFF+"," + JdSmartIRConstant.IR_KEY_TV_MUTE +",");
*/
setJdIRkeyList() 
//设备名称
setDeviceName() 
//会返回一个JdSmartCtrlCmd变量,表示设备当前的状态,详情见JdSmartCtrlCmd类
getJdSmartCtrlCmd()

1.1.4. JdSmartCtrlCmd

通过deviceId与具体JdSmartDevice设备关联,JdSmartDevice类中同时包含JdSmartCtrlCmd类
此类包含order,value1,value2,value3,value4,groupData等变量
有两个含义,

  1. 智能设备的命令,一般指接收到设备控制命令或场景执行命令时
  2. 设备当前状态,当向UI端更新设备的最新状态时,表示当前状态。

更详细信息,见demo 代码CustomSmartHost.java 代码中函数

void controlDevice(JdSmartCtrlCmd cmd, JdbaseCallback callback)
void changeDeviceStatus(JdSmartCtrlCmd cmd, JdSmartDevice dev)
  1. 如果接收到设备控制命令或场景执行命令时,表示如下
    order表示命令,详情见JdSmartDeviceOrder类
    value1, value2, value3, value4 表示此命令所带的参数
    groupData 是jason字符串,如果设备的命令较复杂,用groupData一次传递传多个参数值
    例如:
    收到开灯命令:
JdSmartCtrlCmd.getOrder()将等于JdSmartDeviceOrder.ON 
JdSmartCtrlCmd.getValue1(),因为开灯命令简单不用带参数,不必关注

收到设置空调到下一个模式命令:

JdSmartCtrlCmd.getOrder()将等于JdSmartDeviceOrder.NEXT
JdSmartCtrlCmd.getValue1()将等于AIRCONDITION_MODE_TYPE
  1. 更新设备最新状态给UI,可以不必处理JdSmartCtrlCmd.order成员变量,表示如下:
    value1- value4 表示此设备的当前状态是什么
    groupData 是jason字符串,如果设备的命令较复杂,用groupData一次传递传多个值
    例如: 更新灯的当前状态为打开:
JdSmartCtrlCmd.setValue1("0")

更新空调的状态为制冷模式,风速高,左右扫风前,温度28:

JSONObject jobj = new JSONObject();
jobj.put(JdSmartDeviceOrder.AIRCONDITION_MODE_TYPE, JdSmartDeviceOrder.AIRCONDITION_MODE_COOL);
jobj.put(JdSmartDeviceOrder.AIRCONDITION_WIND_RATE_TYPE, JdSmartDeviceOrder.AIRCONDITION_WIND_RATE_LOW);
jobj.put(JdSmartDeviceOrder.AIRCONDITION_WIND_DIRECTION_TYPE, JdSmartDeviceOrder.AIRCONDITION_WIND_DIRECTION_LEFT_RIGHT);
jobj.put(JdSmartDeviceOrder.TEMPERATURE, "28"); 
airConditionCmd.setGroupData(jobj.toJSONString());

1.1.5. JdSmartDeviceType

包括开关,普通灯,调光灯,窗帘,插座,空调,电视,空气净化器,开窗器,温控器,多功能控制盒,各种传感器
注意:
DEVICE_TYPE_CURTAINS 表示可以精确获取移动位置的窗帘
DEVICE_TYPE_CURTAINS_NO_POSITION 表示不能精确获取移动位置的窗帘

1.1.6. JdSmartDeviceOrder

  • ON,OFF,灯,开关,插座等简单设备的开与关
  • OPEN,CLOSE,MOVE_TO_LEVEL窗帘,空调,空气净化器,开窗器,温控器的开与关
  • MOVE_TO_LEVEL, PAUSE,STOP 表示移动位置,总比是100,例如并开窗帘,则是50,对于空调来说,MOVE_TO_LEVEL调整温度
  • NEXT 切换到设备的下一个模式。空调设备是直接切换到下一个工作模式,风速等级或风向
  • SET 设定设备的某个属性值
  • MUTE 静音正在报警的设备

1.1.7. JdSmartScene

表示场景类,有一个唯一sceneNo,标识场景

  • getSceneNo()和setSceneNo() //获得和设置场景号
  • getSceneId()和setSceneId() //已过时,不建议使用

1.1.8. JdSmartSceneBind

表示场景绑定,它的成员变量sceneNo与JdSmartScene类的sceneNo关联
场景绑定的含义是,场景中包含哪些设备命令。
例如,假设有一个回家场景,里面包含动作,当主人回家后,开客厅灯,开电视,开主卧房间空间
那么将包含4条指令,List getCmdList()将返回4条数据命令

1.1.9. IJdSmartHost

主机相关接口

//获取主机信息
JdSmartHostInfo getHostInfo() 
//搜索并绑定主机    
void searchAndBindHost(boolean isSearch, JdbaseCallback callback)  
// 解除绑定
void unbindHost(JdbaseCallback callback)

登录相关接口

//获取登录的帐户信息
JdSmartAccount getAccount()
//登录
void login(String name, String pwd, JdbaseCallback callback)       
//退出登录
void logout(JdbaseCallback callback)   
//获取当前登录状态    
String getLoginState()  
//设置当前登录状态    
setLoginState(int state, String msg)

场景相关

//执行场景
void controlScene(JdSmartScene jdsmartScene, JdbaseCallback callback)  
//获得所有场景
void getScenes(JdbaseCallback callback)
//创建场景    
void createScene(JdSmartScene jdsmartScene, JdbaseCallback callback)
//删除场景    
void deleteScene(JdSmartScene jdsmartScene, JdbaseCallback callback)
//修改场景    
void updateScene(JdSmartScene jdsmartScene, JdbaseCallback callback)

场景音乐相关

使用场景是这样的, 手机端执行场景时,背景音需要播放相对应的场景音乐。 如果背景音乐可以收到手机场景执行的通知,可以在对接包中,调用此接口来播放场景号对应的场景音乐

//根据场景id,播放相应的场景音乐  
void playSceneMusicFromSys(String sceneNo)

场景绑定相关

//获得某个场景的场景绑定
void getSceneBind(JdSmartScene jdsmartScene, JdbaseCallback callback)  
//创建场景绑定    
void createSceneBind(List<JdSmartCtrlCmd> cmds, JdbaseCallback callback)  
//删除场景绑定
void deleteSceneBind(List<JdSmartCtrlCmd> cmds, JdbaseCallback callback) 
//修改场景绑定    
void updateSceneBind(List<JdSmartCtrlCmd> cmds, JdbaseCallback callback)

设备相关

//自动导入接口中,重新导入时,会首先调用这个接口 
void refeshDevice()
//执行设备指令    
void controlDevice(JdSmartCtrlCmd cmd, JdbaseCallback callback)            
//获得所有设备信息
void getAllDevices(JdbaseCallback callback)  
//获得指定设备信息    
void getDeviceDetail(final String deviceID, final JdbaseCallback callback) 
//获得同类型所有设备
JdSmartDevices getDevicesByType(int deviceType)                
//更新设备状态
void registerDeviceChange(JdbaseCallback callback)
//获得sensor类型设备的存储记录
void getSensorRecord(String deviceid, int pageIndex, int pageSize, JdbaseCallback callback)

1.1.10. CustomSmartService

CustomSmartService.java是与其他Jd软件服务通信的服务类, 不需要做任何修改。
首先在AndroidManifest.xml 中配置启动CustomSmartService.java服务的action名

<action android:name="com.judian.service.CustomSmartService" /> //请不要更改这个,因为SDK端依赖这个
 <service
     android:name=".service.CustomSmartService"
     android:exported="true">
     <intent-filter>
        <action android:name="com.judian.service.CustomSmartService" />
     </intent-filter>
 </service>

1.1.11. CustomSmartHost

CustomSmartHost.java是最终实现的类,实现IJdSmartHost.java接口,客户根据自己的SDK实现相应的接口方法,重点在这个文件

void init(Context context)

当程序运行后,将调用init,可将初始化代码搜索主机,第二次登陆主机(第一次成功登陆,并保存用户名,再次开机后登陆)的代码写此处 当成功登陆主机后,为了减少网络延时,建议立即获取设备列表

/*
 * 初始化部分,当程序运行后,将调用
 *
 * @param context android上下文
 */
void init(Context context);

JdSmartHostInfo getHostInfo()

返回一个JdSmartHostInfo,表示主机支持的功能

/**
 * 获取主机信息,需要配置JdSmartHostInfo类
 *
 * @return JdSmartHostInfo 返回主机信息
 */
JdSmartHostInfo getHostInfo();
void login(String name, String pwd, JdbaseCallback callback)

支持登陆,则需要用户实现,否则直接返回成功,callback.onResult(JdbaseContant.RESULT_SUCCESS, “success”, "");

/**
 * 用户认证登陆
 * 例如:
 *    成功 callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *    失败 callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * @param name     用户名
 * @param pwd      密码
 * @param callback 回调登陆结果
 */
void login(String name, String pwd, JdbaseCallback callback);
JdSmartAccount getAccount()

返回JdSmartAccount信息 如果不支持登陆,则JdSmartAccount.name 应该设为““ 如果未登陆,则JdSmartAccount.name 应该设为””,否则设为当前登陆的用户名,代表已登陆

/**
 * 获得已登陆的账户信息
 *
 * @return 如果未登陆,则JdSmartAccount.name 应该设为"",否则设为当前登陆的用户名,代表已登陆
 */
JdSmartAccount getAccount();
private void setLoginState(int state, String msg)

设置当前登录状态

void logout(JdbaseCallback callback)

支持登陆,则需要用户实现,否则直接返回成功,callback.onResult(JdbaseContant.RESULT_SUCCESS, “success”, "");

/**
 * 退出登陆
 *<pre>
 *例如:
 *    成功 callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *    失败 callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 *</pre>
 * @param callback 回调退出信息
 *
 */
void logout(JdbaseCallback callback);
void searchAndBindHost(boolean isSearch, JdbaseCallback callback)

一般不用实现,请不要改动 支持搜索主机时,实现此接口,如果不支持,直接返回成功,callback.onResult(JdbaseContant.RESULT_SUCCESS, “success”, "");

/**
 * 搜索,并绑定主机网关
 * 例如: callback.onResult(JdbaseContant.RESULT_SUCCESS, "网关信息", "");
 * @param isSearch 是否动态搜索
 * @param callback 回调搜索结果
 */
void searchAndBindHost(boolean isSearch, JdbaseCallback callback);
void unbindHost(JdbaseCallback callback)

从主机网关解除所有设备与场景,这是危险操作,建议不实现,callback.onResult(JdbaseContant.RESULT_SUCCESS, “success”, "");

/**
 * 从主机网关解除所有设备与场景,危险操作
 * <pre>
 * 例如:
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 * </pre>
 * @param callback 回调结果
 */
void unbindHost(JdbaseCallback callback);
public void selectFamily(String familyID, JdbaseCallback callback)

选择家庭,以显示该家庭下的所有设备

void getScenes(JdbaseCallback callback)

获取所有场景信息,场景信息通过json字符串返回。

/**
 * 获取所有场景
 * <pre>
 * 例如:
 * JdSmartScenes jss = new JdSmartScenes();
 * for(Scenexxxx s: list){
 *      JdSmartScene js = new JdSmartScene();
 *      js.setSceneNo(s.getNo());
 *      js.setSceneId(s.getId()+"");
 *      js.setSceneName(s.getName());
 *      js.setVendor(xxxxx);
 *      jss.addScene(js);
 * }
 * callback.onResult(JdbaseContant.RESULT_SUCCESS, JSON.toJSONString(jss), "");
 * </pre>
 * @param callback 回调结果
 *
 */
void getScenes(JdbaseCallback callback);
void createScene(JdSmartScene jdsmartScene, JdbaseCallback callback)

创建一个场景,传入的仅是一个jdsmartScene,里面包含新场景名。 实现时,注意检查是否存在相同的场景名。 

/**
 * 创建场景
 * <pre>
 * 例如:
 *     JdSmartScene js = new JdSmartScene();
 *     js.setSceneName("xxx"); //与传入的场景名一致
 *     js.setSceneNO(xxxxId() + "");
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, JSON.toJSONString(js), "");
 * </pre>
 * @param jdsmartScene 创建的场景, 根据场景的名字screneName创建
 * @param callback     回调创建结果
 */
void createScene(JdSmartScene jdsmartScene, JdbaseCallback callback);
void deleteScene(JdSmartScene jdsmartScene, JdbaseCallback callback)

根据场景号或场景名删除一个场景

/**
 * 删除场景
 * <pre>
 * 例如:
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *     callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * </pre>
 * @param jdsmartScene 删除的场景, 需要根据jdsmartScene.getSceneNo()删除场景
 * @param callback     回调删除结果
 */
void deleteScene(JdSmartScene jdsmartScene, JdbaseCallback callback);
void updateScene(JdSmartScene jdsmartScene, JdbaseCallback callback)

更改场景名字

/**
 * 修改场景
 * <pre>
 * 例如:
 *    callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *    callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * </pre>
 * @param jdsmartScene 修改的场景, 需要根据jdsmartScene.getSceneNo()删除场景
 * @param callback     回调修改的结果
 */
void updateScene(JdSmartScene jdsmartScene, JdbaseCallback callback);
void createSceneBind(List cmds, JdbaseCallback callback)

创建一个场景绑定。 “场景绑定”是一个名词,表示一些设备与某个场景结合在一起 JdSmartCtrlCmd表示一个设备的指令操作,就是将这些设备的指令操作与场景结合在一起。

/**
 * 创建场景绑定
 * <pre>
 * 例如:
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *     callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * </pre>
 * @param cmds     绑定到场景的命令列表
 * @param callback 回调绑定结果
 */
void createSceneBind(List<JdSmartCtrlCmd> cmds, JdbaseCallback callback);
void deleteSceneBind(List cmds, JdbaseCallback callback)

删除场景绑定

/**
 * 删除场景绑定
 * <pre>
 * 例如:
 *    callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *    callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * </pre>
 * @param cmds     删除的场景的命令列表
 * @param callback 回调删除结果
 */
void deleteSceneBind(List<JdSmartCtrlCmd> cmds, JdbaseCallback callback);
void updateSceneBind(List cmds, JdbaseCallback callback)

修改场景绑定

/**
 * 修改场景绑定
 * <pre>
 * 例如:
 *     callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 * </pre>
 * @param cmds     修改的场景的命令列表
 * @param callback 回调删除结果
 */
void updateSceneBind(List<JdSmartCtrlCmd> cmds, JdbaseCallback callback);
void getSceneBind(JdSmartScene jdsmartScene, JdbaseCallback callback)

获得场景的所有场景绑定信息

/**
 * 获取场景绑定
 * <pre>
 * 例如:
 *     JdSmartDevices jds = new JdSmartDevices();
 *     JdSmartDevice device1 = new JdSmartDevice();
 *     JdSmartDevice device2 = new JdSmartDevice();
 *     jds.addDevice(device1);
 *     jds.addDevice(device2);
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, JSON.toJSONString(jds), "");
 * </pre>
 * @param jdsmartScene  场景
 * @param callback  回调结果
 */
void getSceneBind(JdSmartScene jdsmartScene, JdbaseCallback callback);
void getAllDevices(JdbaseCallback callback)

获取所有设备

/**
 * 获取所有设备列表
 * <pre>
 * 例如:
 *    JdSmartDevices jds = new JdSmartDevices();
 *    JdSmartDevice device1 = new JdSmartDevice();
 *    JdSmartDevice device2 = new JdSmartDevice();
 *    jds.addDevice(device1);
 *    jds.addDevice(device2);
 *    callback.onResult(JdbaseContant.RESULT_SUCCESS, JSON.toJSONString(jds), "");
 * </pre>
 * @param callback 回调结果
 */
void getAllDevices(JdbaseCallback callback);
void getAllDeviceType(JdbaseCallback callback)

获得所有的设备类型值,注意是所有在线的设备类型值

/**
 * 得到所有的设备类型值
 * <pre>
 * 例如:
 *    List<Integer> result = new ArrayList<Integer>();
 *    JdSmartDevice device1 = new JdSmartDevice();
 *    JdSmartDevice device2 = new JdSmartDevice();
 *    result.add(device1.getDeviceType());
 *    result.add(device2.getDeviceType());
 *    callback.onResult(JdbaseContant.RESULT_SUCCESS, JSON.toJSONString(result), "");
 * </pre>
 * @param callback 回调类型列表
 */
void getAllDeviceType(JdbaseCallback callback);
JdSmartDevices getDevicesByType(int deviceType)

获取同类型的所有设备

/**
 * 获取同类型的所有设备
 * @param deviceType 设备类型值, 来自于JdSmartDevice.getDeviceType()
 * @return JdSmartDevices 直接返回相同类型所有设备
 */
JdSmartDevices getDevicesByType(int deviceType);
void getDeviceDetail(String deviceID, JdbaseCallback callback)

获取某个指定devId的设备

/**
 * 获取某个指定devId的设备
 * <pre>
 * 例如:
 *     callback.onResult(JdSmartConstant.RESULT_SUCCESS, JSON.toJSONString(jdSmartDevice), "")
 * </pre>
 * @param deviceID 设备的devId, 或者 JdSmartDevice的json字符串
 * @param callback 回调结果
 */
void getDeviceDetail(String deviceID, JdbaseCallback callback);
void controlDevice(JdSmartCtrlCmd cmd, JdbaseCallback callback)

控制设备,cmd里order表示要执行的操作指令, value1, value2, value3, value4表示命令参数

/**
 * 控制设备
 * <pre>
 * 例如:
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *     callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * </pre>
 * @param cmd      设备命令
 * @param callback 回调控制结果
 */
void controlDevice(JdSmartCtrlCmd cmd, JdbaseCallback callback);
void controlScene(JdSmartScene jdsmartScene, JdbaseCallback callback)

控制场景

/**
 * 控制场景
 * <pre>
 * 例如:
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS, "success", "");
 *     callback.onResult(JdbaseContant.RESULT_FAIL, "fail", "");
 * </pre>
 * @param jdsmartScene  场景
 * @param callback     负责回调新的设备信息给上层
 */
void controlScene(JdSmartScene jdsmartScene, JdbaseCallback callback);
void getSensorRecord(String deviceid, int pageIndex, int pageSize, JdbaseCallback callback)

获取感应器记录的内容,因为内容可能很多,所以根据页索引,页大小返回数据

/**
 * 获取感应器记录的内容
 * <pre>
 * 例如:
 *     List<JdSmartSensorRecordGroup> result = new ArrayList<JdSmartSensorRecordGroup>();
 *     JdSmartSensorRecord record1 = new JdSmartSensorRecord();
 *     JdSmartSensorRecord record2 = new JdSmartSensorRecord();
 *     result.add(record1);
 *     result.add(record2);
 *     callback.onResult(JdbaseContant.RESULT_SUCCESS,  JSON.toJSONString(result), "");
 * </pre>
 * @param deviceid  设备ID
 * @param pageIndex 页码,从1开始
 * @param pageSize  每页的数量
 * @param callback  回调信息给上层
 */
void getSensorRecord(String deviceid, int pageIndex, int pageSize, JdbaseCallback callback);
void registerDeviceChange(JdbaseCallback callback)

当设备信息有变化时,通过callback上传设备信息

/**
 * 当设备信息有变化时,应该调用回调
 * 例如:
 * callback.onResult(JdSmartConstant.ACTION_REPORT_DEVICE_STATUS,JSON.toJSONString(jdSmartDevice), "")
 * @param callback 负责回调新的设备信息给上层
 */
void registerDeviceChange(JdbaseCallback callback);

results matching ""

    No results matching ""