海康云眸·普教 API
  1. 移动端SDK
海康云眸·普教 API
  • 产品介绍
  • 能力概览
  • 错误码表
  • 快速入门
    • 接口调用说明
    • 生成授权凭证档
    • 生成access_token
      POST
  • 开发指南
    • 消息通道
    • 接口说明
      • 请求数据
      • 认证管理
  • API列表
    • 基础服务
      • 学校管理
        • 查询学校(教育局)信息
        • 查询教育局下的学校信息
        • 第三方公众号token更新
      • 班级管理
        • 新增班级
        • 修改班级
        • 删除班级
        • 查询班级信息
        • 班级毕业
        • 班级升级
      • 部门管理
        • 新增部门
        • 删除部门
        • 修改部门
        • 查询部门信息
      • 教职工管理
        • 新增教职工
        • 删除教职工
        • 修改教职工
        • 查询教职工信息
        • 教职工部门调整
      • 学生管理
        • 新增学生
        • 删除学生
        • 修改学生
        • 查询学生信息
        • 学生调班
        • 通过学号获取学生信息
        • 添加教学班学生
        • 删除教学班学生
        • 查询教学班学生信息
      • 家长管理
        • 新增家长
        • 删除家长
        • 修改家长
        • 查询家长信息
      • 设备管理
        • 查询所有设备组织
        • 查询设备监控通道
        • 查询家长关联设备信息
        • 查询学校中设备信息
        • 添加设备(非物联设备)
        • 删除设备(非物联设备)
        • 查询学校中指定类型设备数量
        • 远程开门
        • 查询场地空气质量
        • 物联能耗数据查询
        • 物联设备控制接口
      • 设备确权
        • 确权流程说明
        • 自动确权
        • 下线确认
        • 上线确认
      • 场地管理
        • 新增场地
        • 删除场地
        • 修改场地
        • 查询场地信息
        • 场地中新增人员
        • 场地中删除人员
      • 用户管理(旧)
        • 默认角色列表
        • 新增用户
        • 删除用户
        • 修改用户信息
        • 获取登录码
      • 用户管理
        • 默认角色列表
        • 变更说明
        • 新增用户
        • 删除用户
        • 修改用户信息
        • 获取登录码
        • 批量查询UserId
    • 视频接入
      • 获取视频直播地址
      • 获取视频预览地址
      • 局端下属学校取流认证
    • 学生请假管理
      • 新增请假单
      • 删除请假单
      • 查询学生请假信息
    • 教学管理
      • 课表管理
        • 课表数据同步
        • 课表数据同步结果查询
        • 家长读取学生的课表信息
        • 查询行政班或教学班的课表
      • 课程库管理
        • 查询行政班或教学班的班级课程库
        • 查询校本课程库信息
        • 查询校本课程库详细信息
        • 删除班级课程
        • 添加班级课程
        • 修改班级课程
        • 删除校本课程库
        • 添加校本课程库
        • 修改校本课程库
        • 删除校本课程
        • 添加校本课程
        • 修改校本课程
      • 查询学期信息
    • 门禁权限管理
      • 门禁权限下发
    • 电子班级
      • 班级管理
        • 人脸识别参数配置
        • 获取资源类发布内容
        • 获取相册类发布内容
        • 获取视频类发布内容
        • 发布资源类内容(班级公告、校园宣传、紧急通知、校园新闻、校园公告、学习资料)
        • 发布相册类内容(班级相册、校园相册)
        • 发布视频类内容(班级视频、校园视频)
        • 发布考试计划
        • 撤销发布内容
        • 发布班级值日信息
        • 发布倒计时(班级倒计时、校园倒计时)
        • 添加班级值日项信息
        • 查询值日项信息
        • 修改班级值日项信息
        • 删除班级值日项信息
      • 留言管理
        • 新增留言
        • 家长读取学生的留言记录
    • 访客管理
      • 访客预约登记
      • 删除访客预约
    • 第三方跳转(旧)
      • 第三方跳转登录云眸普教对接规范
    • 第三方跳转
      • 第三方跳转登录云眸普教对接规范
    • 消息通道
      • 创建消费者
      • 消费消息
      • 提交偏移量
    • 消息类型定义
      • 消息类型定义
  • 移动端SDK
    • Android
    • IOS
    • 错误码对照表
  1. 移动端SDK

Android

1. 名词解释#

名词释义
oauthToken授权凭证接口获取的access_token
deviceSerial设备序列号
channelNo设备通道号
deviceSerial + channelNo摄像头唯一标志
PTZ云台控制,通过终端控制操作设备

2. 功能介绍#

功能说明
预览直播预览,可设置直播分辨率
回放(SD卡、云存储)回放:SD卡(本地)、云存储
设备对讲对讲(包含半双工对讲和全双工对讲)
预览、回放边播边录播放过程中录像
预览、回放边播边截屏播放过程中截屏
设备的设置功能提供设备设置接口api(声音、清晰度等)
云台控制设备控制接口(云台、变倍画面)
可视对讲可视对讲(接听、拒接、挂断)

3. 快速集成#

3.1. 环境准备#

支持 Android Studio 3.0 以上 支持 JDK 7.0 以上版本
支持 Android 手机系统 4.1 以上版本
支持ARM的armeabi-v7a 、arm64-v8a架构

3.2. Token获取#

SDK初始化所用到的oauthToken参数,为授权凭证接口获取的access_token,建议由服务端维护。

3.3. SDK下载#

登录开发者服务,进入下载页面下载

3.4. SDK集成#

手动拷贝下载SDK中的libs目录, 手动拷贝后需要在APP工程的目录下,并在build.gradle中配置:
         android{
             defaultConfig {
             ...
                 ndk {
                     abiFilters "armeabi-v7a", "arm64-v8a"
                 }     
             }     
             sourceSets {
                 main {
                     jniLibs.srcDirs = ['libs']
                 }
             }
             ...
             repositories 
             {
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
        
注意: 目前支持”armeabi-v7a”和”arm64-v8a”(若对APK的大小有要求,只选择armeabi-v7a架构即可),所以需要添加
         ndk {
             abiFilters "armeabi-v7a", "arm64-v8a"
         }
        
注意: gradle添加依赖,引入App工程下SDK所需的gson和jmdns库
         dependencies {
             implementation(name: 'CloudOpenSDK-x.x.x',ext:'aar') //x.x.x对应的是SDK的版本号 
             implementation 'com.google.code.gson:gson:2.8.5'
             implementation 'com.squareup.okhttp3:okhttp:3.8.1'  //3.8.1或以上
             implementation 'javax.jmdns:jmdns:3.4.1'
         }
        

3.5. 配置权限#

         //网络状态权限 
         <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
         //网络权限 
         <uses-permission android:name="android.permission.INTERNET"/> 
         //录音权限 
         <uses-permission android:name="android.permission.RECORD_AUDIO" />
         //存储权限
         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
         //可视对讲所需权限
         <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
        

3.6. 代码混淆#

目前SDK在打包时不能混淆,请添加以下内容:
         -dontwarn com.ezviz.**
         -keep class com.ezviz.** { *;}
         
         -dontwarn com.ez.**
         -keep class com.ez.** { *;}
         
         -dontwarn com.hc.**
         -keep class com.hc.** { *;}
         
         -dontwarn com.neutral.netsdk.**
         -keep class com.neutral.netsdk.** { *;}
         
         -dontwarn com.hik.**
         -keep class com.hik.** { *;}
         
         -dontwarn com.hikvision.audio.**
         -keep class com.hikvision.audio.** { *;}
         
         -dontwarn com.hikvision.keyprotect.**
         -keep class com.hikvision.keyprotect.** { *;}
         
         -dontwarn com.hikvision.sadp.**
         -keep class com.hikvision.sadp.** { *;}
         
         -dontwarn com.hikvision.netsdk.**
         -keep class com.hikvision.netsdk.** { *;}
         
         -dontwarn com.hikvision.wifi.**
         -keep class com.hikvision.wifi.** { *;}
         
         -dontwarn com.hikvision.cloud.sdk.**
         -keep class com.hikvision.cloud.sdk.** { *;}
         
         -dontwarn com.videogo.**
         -keep class com.videogo.** { *;}
         
         -dontwarn okhttp3.**
         -keep class okhttp3.** { *;}
         
         -dontwarn com.mediaplayer.audio.**
         -keep class com.mediaplayer.audio.** { *;}
         
         -dontwarn org.MediaPlayer.PlayM4.**
         -keep class org.MediaPlayer.PlayM4.** { *;}
         
         -dontwarn com.sun.jna.**
         -keep class com.sun.jna.**{*;}
         
         #Gson混淆配置
         -keepattributes Annotation
         -keep class sun.misc.Unsafe { *; }
         -keep class com.idea.fifaalarmclock.entity.*
         -keep class com.google.gson.stream.* { *; }
         #引用mars的xlog,混淆配置
         -keep class com.tencent.mars.** {
             public protected private *;
         }
        

3.7. SDK初始化#

一般建议在application中初始化
         CloudOpenSDK.getInstance()
             .setLogDebugMode(true) // 默认日志开关状态:打开,正式发布需要关掉
             //sdk数据缓存加密开关(例如SP存储),放在init()方法前设置
             .setDataCacheEncrypt(true, "123456")//密码长度不限制
             .init(
             this,
             "服务端下发的oauthToken",
             new OnCommonCallBack() {
                 @Override
                 public void onSuccess() {
                     Log.d("AppApplication", "初始化成功");
                 } 
                 @Override
                 public void onFailed(Exception e) {
                     Log.d("AppApplication", "初始化失败");
                 }
             });
        

3.8. 预览#

实现代码如下:
         // 预览
         // 创建播放器
         CloudVideoPlayer player=CloudOpenSDK.getInstance().createPlayer(mDeviceSerial, mChannelNo);
         // 设置播放器的显示
         Surface player.setSurfaceHolder(mSurfaceView.getHolder());
         // 设备如果设置了视频加密,需要设置视频加密密码,默认为设备的6位验证码 
         player.setPlayVerifyCode("设备验证码"); 
         // 开始预览播放
         player.startRealPlay();
         // 设置播放监听
         player.setOnRealPlayListener(new CloudVideoPlayer.OnRealPlayListener() {
             @Override
             public void onVideoSizeChanged(int videoWidth, int videoHeight) {}     @Override     public void onRealPlaySuccess() {
             // 播放成功
             }
             @Override
             public void onStopRealPlaySuccess() {// 停止播放成功}
             @Override
             public void onRealPlayFailed(int errorCode, String moduleCode, String description, String sulution) {
                 if (errorCode == 400035 || errorCode == 400036) {
                     // 回调时查看errorCode,如果为400035(需要输入验证码)和400036(验证码错误),则需要开发者自己处理让用户重新输入验证密码,并调用setPlayVerifyCode设置密码,然后重新启动播放
                 }
             }
         });
         //停止直播
         player.stopRealPlay();
         //释放资源
         player.release();
        
说明:预览播放成功后可以进行以下操作:录像、拍照、对讲、云台控制、声音开关、视频画面缩放,详见CloudVideoPlayer类,其中设备控制该接口的如云台控制、对讲,属于限制级接口,要优选通过判断设备的能力集来调用,设备能力集请查看EZDeviceInfo对象的属性值来判断具体方法;
         //开启录像,recordFile录制本地路径,例如:
         Environment.getExternalStorageDirectory().getPath()+"/abc" player.startLocalRecordWithFile(String recordFile)
         //结束本地直播流录像与startLocalRecordWithFile成对使用
         player.stopLocalRecord()
         //截图
         player.capturePicture()
         //声音开关
         player.openSound();
         player.closeSound(); 
         //PTZ 云台控制接口,该接口为耗时操作,必须在线程中调用 
         CloudOpenSDK.getInstance().controlPTZ(
         String deviceSerial, //设备序列号
         int channelNo, //通道号
         EZConstants.EZPTZCommand command,//ptz控制命令
         EZConstants.EZPTZAction action,//控制启动/停止
         int speed);//速度(0-2)
        
说明:CloudVideoPlayer中的setVideoLevel设置视频清晰度(videoLevel),此调节可以在视频播放前设置也可以在视频播放成功后设置,视频播放成功后设置了清晰度需要先停止播放stopRealPlay然后重新开启播放startRealPlay才能生效。
         /**
          * 设置指定监控点视频清晰度
          * <p>
          * 该接口为耗时操作,必须在线程中调用
          * </p>
          *
          * @param videoLevel 清晰度 0-流畅 1-均衡 2-高品质 3-超清
          * @return
          */
         player.setVideoLevel(levelVal);
         //设置成功
         // 停止播放 Stop play
         player.stopRealPlay();
         // 开始播放 start play
         player.startRealPlay();
        

3.9. 回放#

实现代码如下:
         //回放 
         CloudVideoPlayer player = 
         CloudOpenSDK.getInstance().createPlayer(mDeviceSerial, mChannelNo); 
         //设置播放器的显示Surface
         player.setSurfaceHolder(mBackPlayerSv.getHolder());
         //设备加密的需要传入密码
         //该接口必须在收到400035(需要输入验证码)和400036(验证码错误)错误回调时调用 
         player.setPlayVerifyCode(ConfigCst.VERIFY_CODE); //设置回放回调 
         player.setOnBackPlayListener(new CloudVideoPlayer.OnBackPlayListener() {
             @Override
             public void onVideoSizeChanged(int videoWidth, int videoHeight) {}     
             @Override
             public void onBackPlaySuccess() {//回放成功} 
             @Override
             public void onStopBackPlaySuccess() {//停止回放成功}
             @Override
             public void onBackPlayFailed(int errorCode, String moduleCode, String description, String sulution) {
             if (errorCode == 400035 || errorCode == 400036) {
             //回调时查看errorCode,如果为400035(需要输入验证码)和400036(验证码错误),则需要开发者自己处理让用户重新输入验证密码,并调用setPlayVerifyCode设置密码,然后重新启动播放
             }
             }
         });
         /**
           * 开始云存储远程回放
           * @param cloudFile 云存储文件信息  参见下文中的 查询云存储录像信息列表
           * @return  true 表示成功, false 表示失败
           */
         player.startPlayback(EZCloudRecordFile cloudFile); 
         //或者
         /**
           * 开始远程SD卡回放
           * @param deviceFile SD卡文件信息  参见下文中的 查询远程SD卡存储录像信息列表
           * @return  true 表示成功, false 表示失败
           */
         player.startPlayback(EZDeviceRecordFile deviceFile);
         //或者
         /**
           * 开始远程SD卡回放---按时间回放
           * @param startTime 开始时间
           * @param stopTime 结束时间
           * @return  true 表示成功, false 表示失败
           */
         player.startPlayback(Calendar startTime, Calendar stopTime); 
         //停止远程回放  
         player.stopPlayback();
        
查询云存储和远程SD卡存储录像信息列表
         /**
         * 查询云存储录像信息列表
         * 该接口中有网络操作,需要在线程中调用
         * @param deviceSerial 设备序列号
         * @param cameraNo     camera的序号,EZCameraInfo.cameraNo
         * @param startTime    查询时间范围开始时间
         * @param endTime      查询时间范围结束时间
         * @return 云存储录像信息列表
         * @throws BaseException
         */
         CloudOpenSDK.getEZOpenSDK().searchRecordFileFromCloud(String deviceSerial, int cameraNo, Calendar startTime, Calendar endTime);
         /**
          * 查询远程SD卡存储录像信息列表
          * 该接口为耗时操作,必须在线程中调用
          */
          CloudOpenSDK.getEZOpenSDK().searchRecordFileFromDevice(String deviceSerial, int cameraNo, Calendar startTime, Calendar endTime);
        
回放播放成功后可以进行以下操作:录像、拍照、声音开关、拖动进度播放、倍数回放,具体方法见CloudVideoPlayer类。
         /**
          * 设置回放的倍数(快慢)
          * {@link com.videogo.openapi.EZConstants.EZPlaybackRate}
          * <li>1倍:   EZ_PLAYBACK_RATE_1(1)</li>
          * <li>4倍:   EZ_PLAYBACK_RATE_4(4)</li>
          * <li>1/4倍: EZ_PLAYBACK_RATE_4_1(5)</li>
          * <li>6倍:   EZ_PLAYBACK_RATE_8(6)</li>
          * <li>1/8倍: EZ_PLAYBACK_RATE_8_1(7)</li>
          * <li>16倍:  EZ_PLAYBACK_RATE_16(8)</li>
          * <li>1/16倍:EZ_PLAYBACK_RATE_16_1(9)</li>
          *
          * @param rate
          * @return
          */
         player.setPlaybackRate(EZConstants.EZPlaybackRate rate);
        

3.10. 可视对讲#

实现代码如下:
         CloudVideoPlayer player = 
         CloudOpenSDK.getInstance().createPlayer(mDeviceSerial, mChannelNo);
         //设备加密的需要传入密码
         //该接口必须在收到400035(需要输入验证码)和400036(验证码错误)错误回调时调用 
         player.setPlayVerifyCode(String verifyCode);
         //开启对讲 
         player.startVoiceTalk(); 
         //关闭对讲
         player.stopVoiceTalk();
         //注意对于半双工对讲:需要调用上面接口开启对讲
         //开启对讲后能听到设备端声音,但是设备端听不到自己的声音,需要以下操作
         setVoiceTalkStatus
         //设备端听,手机端说
         player.setVoiceTalkStatus(true);
         //手机端听,设备端说
         player.setVoiceTalkStatus(false);
         //设置对讲监听
         player.setOnVoiceTalkListener(new 
         CloudVideoPlayer.OnVoiceTalkListener() {
         @Override
         public void onVoiceTalkSuccess() {
         }
         @Override
         public void onVoiceTalkFail(int errorCode, String moduleCode,   String 
         description, String sulution) {
         //回调时查看errorCode,如果为400035(需要输入验证码)和400036(验证码错误),
         //则需要开发者自己处理让用户重新输入验证密码,并调用setPlayVerifyCode设置密码,然后
         重新启动播放 
         }
         });
        
说明:对讲流程需要根据设备的对讲能力进行区分处理。EZDeviceInfo中的isSupportTalk可获取到设备的对讲能力,0-不支持对讲,1-支持全双工对讲,3-支持半双工对讲。 同一设备需要开启不同功能(直播/回放/对讲)的播放器时,需要分别对每个功能创建一个播放器,播放器的功能是单一的。关于对讲功能,如果播放有声音输出,则在开启对讲前需要关闭播放的声音closeSound,关闭对讲后开启播放的声音openSound,详见Demo。
可视对讲就是预览、对讲和同步信令功能的组合。在接听前需要判断呼叫的设备的状态若为响铃中(ring),则可以接听,然后再同步接听信令。在拒接前也一样需要判断其状态为响铃中,则可以拒接,然后再同步拒接信令。挂断则分为两种:一种是呼叫设备挂断,这种情况下需要App端通过获取通话状态方法getVideoIntercomCallStatus()判断其状态若为空闲中(idle),则调用stop预览和对讲。另一种是App端主动挂断,这种情况下,只要同步挂断信令、stop预览和对讲即可。具体实现,详见Demo。
接听、挂断、拒接,实现代码如下:
         TalkCallInfo talkCallInfo = new TalkCallInfo(); 
         talkCallInfo.setDeviceSerial(mDeviceSerial);//设备序列号 
         talkCallInfo.setRoomNum("102");//房间号,例如102中1是楼层号,02是房间号 
         talkCallInfo.setPeriodNumber("1");//期号 
         talkCallInfo.setBuildingNumber("1");//楼号
         talkCallInfo.setUnitNumber("1");//单元号 
         talkCallInfo.setFloorNumber("1");//层号
         talkCallInfo.setDevIndex("1");//设备序号,非必填
         talkCallInfo.setUnitType(HConfigCst.UnitType.WALL);//类型: outdoor门口机,wall围墙机
         /**
         * 同步信令 包括接听 挂断 拒接等等
         * cmdType:HConfigCst.CallCommand.CALL_ANSWER 接听
         * cmdType:HConfigCst.CallCommand.CALL_HANGUP 挂断
         * cmdType:HConfigCst.CallCommand.CALL_REJECT 拒接
         * cmdType:HConfigCst.CallCommand.BELL_TIMEOUT 响铃超时
         */
         public void 
         sendVideoIntercomCallSignal(final TalkCallInfo talkCallInfo,final String cmdType,final OnCommonCallBack cb) {
             VideoIntercomCallManager.sendVideoIntercomCallSignal(talkCallInfo,cmdType, cb);
         }
         //调用方法 
         CloudOpenSDK.getInstance().sendVideoIntercomCallSignal(talkCallInfo,
                 HConfigCst.CallCommand.CALL_HANGUP,
                 new OnCommonCallBack() {
                     @Override
                     public void onSuccess() {//挂断成功}
                     @Override
                     public void onFailed(Exception e) {}
                 });
         /**
          * 获取通话状态
          */
         public void getVideoIntercomCallStatus(final String deviceSerial,final  OnCommonCallBackV2<String> cb);
         //调用,返回状态有三种:
         //空闲:HConfigCst.IDLE
         //响铃中:HConfigCst.RING
         //通话中:HConfigCst.ONCALL
         CloudOpenSDK.getInstance().getVideoIntercomCallStatus("设备序列号",
             new OnCommonCallBackV2<String>() {
             @Override
             public void onSuccess(String data) {
                 if (HConfigCst.CallStatus.RING.equals(status)) {
                     //TODO接听、拒接
                 }
             }
             @Override
             public void onFailed(Exception e) {}
         });
        

3.11. 局域网设备预览#

注意:
1、在局域网设备预览前,请确保设备已配网或已连网。
2、在局域网设备预览前,请确保手机与设备处于同一局域网或手机直接连接支持热点模式的设备。
简要流程如下:
1、在同一局域网下,搜索到该设备或者手动添加该设备。
2、判断该设备是否激活。
3、判断该设备是否多通道。
4、进行登录操作,登陆成功后进行局域网预览相关操作。

3.11.1找到该设备信息#

通过EZHCNetDeviceSDK.getInstance().startLocalSearch()接口进行搜索,搜索到一台设备就回调一次EZSADPDeviceInfo信息。
注意:
1、搜索到的EZSADPDeviceInfo.getDeviceSerial()中的序列号是全信息(例如CS-C6CN-3B2WFR0120181201CCCHC74540922),真正的序列号为最后几位(例如C74540922),可根据这个进行判断相对应的设备。
2、搜索接口可能长时间没有返回结果(原因:1.不在同一局域网;2.该局域网下没有设备;3.扫描超时;),这时候建议开发者设置一个超时时间或者重试机制。
3、记得在功能使用结束后或者页面的onDestroy()处,调用EZHCNetDeviceSDK.getInstance().stopLocalSearch()停止搜索。
4、建议在调用startLocalSearch()前请调用下stopLocalSearch()方法。
实现代码如下:
         //局域网设备搜索开始接口
         EZHCNetDeviceSDK.getInstance().startLocalSearch(new EZHCNetDeviceSDK.SadpDeviceFoundListener() {
             @Override
             public void onDeviceFound(final EZSADPDeviceInfo sadpDeviceInfo) {
                 LogUtil.d(TAG,
                         "onDeviceFound  " + sadpDeviceInfo.getDeviceSerial() + "  " + sadpDeviceInfo.getDeviceSerial());
                 //判断设备是否已激活
                 if (sadpDeviceInfo.isActived()){
                 //已激活,则进行下一步的操作
                 }else{
                  //未激活,则先跳到激活页面进行激活操作
                 }
             }
         });
         //局域网设备激活接口,这里的序列号为全序列号信息
         EZHCNetDeviceSDK.getInstance().activeDeviceWithSerial(mSeriNo, mPassword)
         //局域网设备搜索停止接口
         EZHCNetDeviceSDK.getInstance().stopLocalSearch();
        
注:修改设备验证码操作,详见Demo中的LanDeviceActivity.java类中的modifyVerificationCode()方法。

3.11.2.局域网登录#

         /**
              * 如果知道设备的IP和端口号,则不需要进行搜索操作,可直接进行登录操作
              *
              * @param userName 设备管理员名称,默认admin
              * @param pwd 设备管理员密码,海康设备默认为Hik+验证码,萤石设备默认为验证码
              * @param deviceip 设备Ip地址
              * @param port    设备端口号
              */
         EZHCNetDeviceSDK.getInstance().loginDeviceWithUerName(String userName, String pwd, String deviceip, int port);
        

3.11.3.是否多通道#

登录成功后,判断设备是否多通道:
         if (loginDeviceInfo.getByChanNum() + loginDeviceInfo.getByIPChanNum() > 1) {
            // 多通道
         } else if (loginDeviceInfo.getByChanNum() + loginDeviceInfo.getByIPChanNum() == 1) {
             if (loginDeviceInfo.getByChanNum() > 0) {
                //单通道
             } else {
                 //没有通道,例如NVR下面没有挂载任何设备
             }
         } else {
         //设备不支持预览操作
             showNotSupportViewDailog();
         }
        

3.11.4.局域网预览#

实现代码如下:
         //局域网预览
         //创建播放器
         LanVideoPlayer mLanVideoPlayer = CloudOpenSDK.getInstance().createLanPlayer(mUserId, mChannelNo, 1);
         mLanVideoPlayer.setSurfaceHolder(mSurfaceView.getHolder());
         //设置播放监听
         mLanVideoPlayer.setLanPlayListener(new CloudOpenSDKListener.OnLanRealPlayListener() {
             @Override
             public void onVideoSizeChanged(int videoWidth, int videoHeight) {
             }
             @Override
             public void onRealPlaySuccess() {
                 LogUtils.deBug("LanVideoPlayer onRealPlaySuccess");
                 //预览成功
             }
             @Override
             public void onStopRealPlaySuccess() {
                 LogUtils.deBug("LanVideoPlayer onStopRealPlaySuccess");
                 //停止预览成功
             }
             @Override
             public void onRealPlayFailed(int errorCode, String moduleCode, String description, String sulution) {
                 LogUtils.deBug("LanVideoPlayer onRealPlayFailed");
                 //预览失败
             }
         });
         //开始预览
         mLanVideoPlayer.startRealPlay();
         //释放资源
         mLanVideoPlayer.release();
         //停止预览
         mLanVideoPlayer.stopRealPlay();
        
说明:预览播放成功后可以进行以下操作:录制、抓图、声音开关、
         //开启声音
         mLanVideoPlayer.openSound();
         //关闭声音
         mLanVideoPlayer.closeSound();
         //开始录制
         mLanVideoPlayer.startRecordingEx(recordPath);
         //停止录制
         mLanVideoPlayer.stopRecordingEx();
         //抓图
         mLanVideoPlayer.capturePicture(picPath);
        
详细的例子,请详见Demo。

4. 错误码#

错误码说明
10100服务器异常
10101服务平台服务器返回数据异常
10102接口调用过于频繁
10105请求包含语法错误或无法完成请求
10110SDK初始化失败
10111SDK未初始化,请初始化
10125token失效,请刷新
10150同步信令失败
10151获得可视对讲通话状态异常
10160云台控制操作异常

5. 常见问题(FAQ)#

No.10001
Q**:**安卓SDK是否提供混淆规则
A**:**没有混淆规则,对接时不要混淆开放平台的SDK
No.10002
Q**:**安卓SDK预览时报Could not find class ‘com.google.gson.Gson’
A**:**安卓SDK预览时报Could not find class ‘com.google.gson.Gson’, referenced from method;缺少了gson的包,需要引入
No.10003
Q**:**预览时提示“相同取流正在处理,未成功,拒绝本次处理
A**:**预览时提示“相同取流正在处理,未成功,拒绝本次处理”是由于客户端有重连机制,上一次取流的操作还未得到响应,下一次就开始取流了导致重复请求,主要原因可能是由于设备所在网络情况不好响应慢或者频繁上下线导致
No.10004
Q**:**清晰度:流畅、均衡、高清、超清,这几个里边的流畅和均衡,是固定分辨率,还是根据网速给出的建议分辨率?
A**:**是固定的分辨率
No.10005
Q**:**我调用了startRealPlay()方法,视频播放器去还是黑色的?
A**:**请检查下surfaceView的holder是否创建完成
No.10006
Q**:**120010是设备验证码输入错误的意思,验证码是正确的,就是一直报错?
A**:**设备验证码输入错误了,注意标签上六位大写字母为验证码,这里的验证码是区分大小写的

【海康云眸】API开发者 微信交流群

用微信扫右侧二维码,加入【海康云眸】API开发者 交流群,互助沟通

扫码加入交流群
上一页
消息类型定义
下一页
IOS
Built with