SDK API

通用API

不需要接入IPC

MQTT服务

IMqttProcessManager mqttProcessManager = IPCServiceManager.getInstance()
.getService(IPCServiceManager.IPCService.MQTT_SERVICE);

/**
 * MQTT消息处理相关
 */
public interface IMqttProcessManager {

    /**
     * mqtt 连接状态变化回调
     * 当sdk 与云端mqtt 连接状态发生变化时,进行的回调
     * */
    void setMqttStatusChangedCallback(IMqttStatusCallback cb);

    /**
     * 自己控制发送心跳包
     */
    public boolean sendHeartbeat();

    /**
     * 主动发送MQTT消息
     * @param protocol  协议编号
     * @param jsonString    消息体
     */
    public void sendMqttMsg(int protocol, String jsonString);

    /**
     * 注册接收MQTT消息
     * @param protocol  协议编号
     * @param callback  消息回调
     * @param <T>   接收消息的类型(MQTT消息结构的data字段)
     */
    public <T> void registerMqttMsg(int protocol, MqttMsgCallback<T> callback);

    /**
     * 反注册
     * @param protocol  协议编号
     */
    public void unregisterMqttMsg(int protocol);

}

IPC API

需要接入IPC

配网服务

INetConfigManager iNetConfigManager = IPCServiceManager.getInstance()
.getService(IPCServiceManager.IPCService.NET_CONFIG_SERVICE);

/**
 * 配网服务接口
 */
public interface INetConfigManager {

    void setPID(String pid);

    public void setAuthorKey(String authorKey);

    public void setUserId(String userId);

    /**
     * 检查网络,完成配网过程
     * @param callback 配网回调
     * void configOver(String token); 配网结束回调
     * void startConfig(); 开始配网回调
     * void recConfigInfo(); 设备收到配网信息回调
     */
    void configNetInfo(NetConfigCallback callback);

    /**
     * 配置配网参数
     * @param param
     * @param obj
     */
    void config(String param,Object obj);

    /**
     * 停止配网
     */
    void stop(Context ctx);

}

DP控制

IControllerManager controllerManager = IPCServiceManager.getInstance()
.getService(IPCServiceManager.IPCService.CONTROLLER_SERVICE);

public interface IControllerManager {

    /**
     * dp上报接口,在处理完dp点之后回复客户端
     * @param dpID dp标示
     * @param type 类型
     * @param pVal 值
     * @return
     */
    int dpReport(int dpID, int type, Object pVal);
    
    /**
     * 基础的DP回调类
     *
     * @param dpEventSimpleCallback
     */
    void setDpEventSimpleCallback(DPEventSimpleCallback dpEventSimpleCallback);

    /**
     * 复杂的DP处理类
     *
     * @param callback
     */
    void setDPEventCallback(AbstractDPEventCallback callback);

}

设备相关信息

IDeviceManager deviceManager = IPCServiceManager
.getInstance().getService(IPCServiceManager.IPCService.DEVICE_SERVICE);

public interface IDeviceManager {

    /**
     * 获取DP点 SDCard状态  {@link com.tuya.smart.aiipc.ipc_sdk.callback.DPConst.SDCardStatus}
     */
    int getDPSDCardStatus();

    /**
     * 获取SDCard格式化状态
     */
    int getSDCardFormatStatus();

    /**
     * 格式化SDCard
     */
    void SDCardFormat();

    /**
     * 重新挂载SDCard
     */
    void SDCardRemount();

    /**
     * SDK获取SDCard {@link SDStatus}
     */
    int SDCardGetStatus();

    /**
     * 获取SDCard容量
     */
    SDVolumeInfo SDCardGetCapacity();

    /**
     * 获取SDCard路径
     */
    String SDCardMountPath();

    /**
     * SD卡文件录入的方式
     */
    int GetModeConfig();

    /**
     * 获取设备ID
     */
    String getDeviceId();

}

移动侦测

IFeatureManager featureManager = IPCServiceManager.getInstance()
.getService(IPCServiceManager.IPCService.FEATURE_SERVICE);

public interface IFeatureManager {

    /**
     * 设置上传视频开关
     * @param on
     */
    void setUploadVideo(boolean on);

    /**
     * 设置存储事件
     * @param type
     */
    void setStoryType(StoreType type);

    /**
     * 初始化图像移动侦测
     * @param frame_w 图像宽
     * @param frame_h 图像高
     * @param sensitivity 移动侦测灵敏度,设置1-3,对应越来越灵敏
     * @param y_thd 移动侦测评判阈值,默认30 低照度可降低调试
     * @param x 侦测区域左上角坐标x
     * @param y 侦测区域左上角坐标y
     * @param w 侦测区域宽
     * @param h 侦测区域高
     * @param tracking_enable 是否进行跟踪 0: 关闭跟踪 1: 开启跟踪
     *
     * @return success: true failed: false
     * */
    boolean initMotionDetect(int frame_w, int frame_h, int sensitivity, int y_thd,
                             int x, int y, int w, int h, int tracking_enable);

    /**
     * 设置移动侦测图片分辨率
     * @param frame_w
     * @param frame_h
     * */
    void setMotionFrameSize(int frame_w, int frame_h);

    /**
     * 设置移动侦测灵阈值
     * 范围[5-30]. 白天光照强烈阈值可以调大,晚上时光线暗,阈值调小
     *
     * @param threshold
     * */
    void setMotionThreshold(int threshold);

    /**
     * 设置移动侦测灵敏度
     * 灵敏度范围[1-3], 灵敏度越来越高
     * @param sensitivity
     * */
    void setMotionSensitivity(int sensitivity);

    /**
     * 设置移动侦测区域
     * @param index 区域index
     * @param x 起始坐标x
     * @param y 起始坐标y
     * @param w 起始点横向偏移
     * @param h 起始点纵向偏移
     * */
    void setMotionRegion(int index, int x, int y, int w, int h);

    /**
     * 移动侦测
     * @param pixelData 需要侦测的图像数据, 必须为YUV 格式
     * @param motionResult 移动侦测的返回结果 motionResult[0]: 侦测是否有结果(1: 有结果 0: 无结果)
     *                     (motionResult[1]:motionResult[2]) 侦测结果的坐标
     * return success: 1 failed: !1 */
    int detectMotion(ByteBuffer pixelData, int[] motionResult);

    /**
     * 反初始化移动侦测
     * */
    void releaseMotion();

}

低功耗模式

class TransJNIInterface {
    
    /**
     * 进入低功耗
     *
     * @param interval 心跳间隔30-120s,默认60s,如果小于0则不发送
     * @param callback app唤醒的回调
     * @return
     */
    public boolean enableLowPower(int interval, WakeUpCallback callback);


    /**
     * 退出低功耗
     *
     * @return
     */
    public boolean disableLowPower();
    
}

P2P

class TransJNIInterface {
    
     /**
     * 启动 P2P 传输模块
     */
    public int startMultiMediaTrans();

    /**
     * 停止P2P 传输
     */
    public int closeMultiMediaTrans();
    
    /**
     * 设置P2P事件回调
     */
    public void setP2pEventCallback(P2PEventCallback cb);
    
}

云存储

IMediaTransManager transManager = IPCServiceManager.getInstance()
.getService(IPCServiceManager.IPCService.MEDIA_TRANS_SERVICE);

public interface IMediaTransManager {

    /**
     * 开启/暂停/恢复 云存储
     * @return 返回一个存储事件 event id
     */
    public int startCloudStorage();
    
    public int pauseCloudStorage();

    public int resumeCloudStorage();

    /**
     * 启动一个云存储事件.
     *
     * @param snap_buffer   jpeg 数据, 大小不超过100k
     * @param snapshot_size
     * @param type          云存储时间类型
     * @return 返回一个存储事件 event id
     */
    public int startCloudStorageEvent(byte[] snap_buffer, int snapshot_size, int type);

    /**
     * 停止一个云存储事件
     *
     * @param eventId #addCloudStorageEvent 返回的云存储事件id
     */
    public int stopCloudStorageEvent();
    
     /**
     * 添加一个云存储事件.
     *
     * @param snap_buffer   jpeg 数据, 大小不超过100k
     * @param snapshot_size
     * @param type          云存储时间类型
     * @param maxDuration   云存储最大时间 单位 (秒)
     * @return 返回一个存储事件 event id
     */
    public int addCloudStorageEvent(byte[] snap_buffer, int snapshot_size, int type, int maxDuration);

    /**
     * 删除一个云存储事件
     *
     * @param eventId #addCloudStorageEvent 返回的云存储事件id
     */
    public int deleteCloudStorageEvent(int eventId);

    /**
     * 获取云存储订单类型 {@see CloudStorageType}
     */
    public int getCloudStorageStoreMode();

    /**
     * 获取云存储事件状态 
     * @param type
     * @return {@see Common.EventStatus}
     */
    public int getCloudStorageEventStatus(int type);
    
}

视频流

class TransJNIInterface {
    
     /**
     * push 一帧数据流
     *
     * @param streamType
     * @param nalType
     * @param streamData
     * @param timeStamp
     */
    public int pushMediaStream(int streamType, int nalType, byte[] streamData, long timeStamp);
    
}

HTTP请求

class TransJNIInterface {
    
    public IPCHttpResponse httpRequest(String apiName,
                                       String apiVersion, String jsonMsg)
}

Last updated