萤石开放平台SDKAndroid开发文档.docx
- 文档编号:30630635
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:66
- 大小:3.20MB
萤石开放平台SDKAndroid开发文档.docx
《萤石开放平台SDKAndroid开发文档.docx》由会员分享,可在线阅读,更多相关《萤石开放平台SDKAndroid开发文档.docx(66页珍藏版)》请在冰豆网上搜索。
萤石开放平台SDKAndroid开发文档
萤石云视频AndroidSDK接口使用说明
合作伙伴交流使用
版本
日期
修改人
修改原因
3.0
2015-10-15
夏兴锁
SDK大版本重构
3.1
2015-12-05
夏兴锁
1UI改版
2增添广场接口
3.2
2016-01-13
夏兴锁
增加设备操作/留言/等相关接口
3.3
2016-01-28
夏兴锁
1,增加A1探测器接口
2,修正版本升级界面bug
3,播放时给出终端绑定错误码120031
4,修正其他bug
特别说明1:
本SDK只包含真机调试的功能,不支持任何模拟器的调试;
特别说明2:
本SDK提供的功能都已经在文档上说明,任何不在文档上说明的功能不支持,用户可以向我们提需求来完善功能;
特别说明3:
请频繁查看内容更新,特别是FAQ栏目。
1.简介3
2.名词解释3
3.功能介绍3
4.SDK配置3
5.快速接入示范5
5.1获取摄像头列表5
5.2添加设备7
5.3Wifi一键配置8
5.4设备预览12
6.接口14
6.1SDK整体接入流程14
6.2SDK初始化15
6.3登录模块15
6.4设备模块17
6.5设备升级24
6.6报警信息模块24
6.7留言消息模块25
6.8SD卡操作27
6.9录像相关模块28
6.10设备控制模块29
6.11EZPlayer模块30
6.12广场相关接口38
6.13安全验证接口40
6.14其他接口41
6.15实体类42
6.16EZOpenSDK枚举值44
1.简介
本文档用于说明萤石开放平台SDKAndroid版本接口之间的关系以及接口调用顺序,对开放平台SDKAndroid版本各接口都有详细的说明。
主要分为四个部分,第一部分为名词解释;第二部分为SDK环境配置;第三部阐述了开放SDK的主要调用流程;第四部分对各模块接口进行了详细的说明
2.名词解释
名词
释义
accessToken
访问令牌,由server返回给client用于认证
camerId
摄像头唯一标志
AppKey
应用程序key
AppKey的申请可以参阅
deviceSerial
设备唯一标志
OSD
视频当前时间
PTZ
云台控制,可以通过终端控制操作设备
3.功能介绍
V3.0:
授权登录、获取摄像头列表、直播预览、查看回放(SD卡、云存储)、设备添加删除、设备的设置功能(h5)、设备控制接口(云台、镜头画面)、WiFi配置、视频本地录像、视频截屏、报警消息等
V3.1:
安全验证接口、获取设置设备验证码、数据解密接口、视频广场相关接口等,主要功能是完成UI版本的开源项目
4.SDK配置
1.新建androidapp工程
2.导入EZOpenSDK.jar(拷贝到libs/下)
3.拷贝lib*.so到libs/armeabi/
4.设置AndroidManifest.xml
权限:
name="android.permission.RESTART_PACKAGES"/> name="android.permission.GET_TASKS"/> name="android.permission.INTERNET"/> name="android.permission.WAKE_LOCK"/> name="android.permission.ACCESS_NETWORK_STATE"/> name="android.permission.WRITE_OWNER_DATA"/> name="android.permission.CAMERA"/> name="android.permission.RECORD_AUDIO"/> name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> name="android.permission.WRITE_EXTERNAL_STORAGE"/> name="android.permission.READ_PHONE_STATE"/> name="android.permission.ACCESS_WIFI_STATE"/> name="android.permission.CHANGE_WIFI_STATE"/> name="android.permission.READ_LOGS"/> name="android.permission.SYSTEM_ALERT_WINDOW"/> name="android.permission.CHANGE_CONFIGURATION"/> 应用组件: android: name="com.videogo.main.EzvizWebViewActivity" android: configChanges="orientation|keyboardHidden" android: screenOrientation="portrait"> 用于sdk中间页显示,包含登录、设备添加、设备操作等页面 android: name=".EzvizBroadcastReceiver" android: exported="false"> name="com.videogo.action.OAUTH_SUCCESS_ACTION"/> name=".conn.CONNECTIVITY_CHANGE"/> 用于接收网络变化刷新SDK网络状态,接收中间页登录成功消息启动其他界面 5.快速接入示范 本节旨在引导开发者进行快速接入,通过介绍几个关键的接口,并给出对应的界面和接口,以及代码范例,让开发者对sdk有个初步了解 首先请下载并安装萤石云app,登陆以后,进入的是监控列表界面,如下所示[图中橙色矩形框仅作为标注,并非原生app界面] 5.1获取摄像头列表 try{ List result=mEZOpenSDK.getCameraList(0,10); returnresult; }catch(BaseExceptione){ mErrorCode=e.getErrorCode(); returnnull; } 说明: 通过调用getCameraList,可以得到一个列表,列表每一项包含一个摄像头的信息。 开发者可以通过listadapter将列表展示 代码位于Src\com\videogo\ui\cameralist\EZCameraListActivity.java 5.2添加设备 说明: 需要添加设备时,可以点击界面一中的加号(+),进入界面2 界面二是一个二维码扫描,用户可以通过扫描二维码获取设备序列号,也可以点击界面右上角的图标(橙色标注),进入界面3,界面3是一个手动输入序列号界面 界面2(二维码扫描)代码在src\com\videogo\scan\main\CaptureActivity.java 界面3(手动输入)代码在src\com\videogo\ui\devicelist\SeriesNumSearchActivity 用户输入设备序列号,只有当设备没有被其他人添加,并且设备已经在线(注册上平台)时,才能够被添加,因此,必须要查询一下该设备状态,调用的接口是probeDeviceInfo try{ mEZProbeDeviceInfo=mEZOpenSDK.probeDeviceInfo(serialNo); sendMessage(MSG_QUERY_CAMERA_SUCCESS); LogUtil.infoLog(TAG,"probeDeviceInfosuccess"); }catch(BaseExceptione){ sendMessage(MSG_QUERY_CAMERA_FAIL,e.getErrorCode()); LogUtil.infoLog(TAG,"probeDeviceInfofail: "+e.getErrorCode()); e.printStackTrace(); } 如果该接口返回成功,则说明该设备状态正常,继续调用addDevice接口添加。 try{ booleanresult=mEZOpenSDK.addDevice(mSerialNoStr,mVerifyCode); //添加成功 sendMessage(MSG_ADD_CAMERA_SUCCESS); }catch(BaseExceptione){ sendMessage(MSG_ADD_CAMERA_FAIL,e.getErrorCode()); LogUtil.errorLog(TAG,"addcamerafail"); } 如果该接口返回错误,开发者需要处理以下几个错误码,告诉用户该设备不可添加的原因: 20020设备在线,已经被自己添加(给出提示) 20022设备在线,已经被别的用户添加(给出提示) 20023设备不在线,未被用户添加(这里需要调用wifi一键配置) 20024设备不在线,已经被别的用户添加(给出提示) 20029设备不在线,已经被自己添加(给出提示) 至此,一个简单的设备添加就完成了 5.3Wifi一键配置 在上述调用接口probeDeviceInfo过程中,如果返回的错误码是20023,说明设备还没有联网,这时需要让设备联网,如果是有线设备,需要提示用户插入网线。 如果是无线设备,则需要进行wifi配置 开始一键配置需要调用startConfigWifi接口 newThread(newRunnable(){ @Override publicvoidrun(){ mEZOpenSDK.startConfigWifi(AutoWifiConnectingActivity.this,wifiSSID,wifiPassword,deviceDiscoveryListener); } }).start(); 结束一键配置需要调用stopConfigWiFi接口 需要传入一个回调函数,用于处理事件 DeviceDiscoveryListenerdeviceDiscoveryListener=newDeviceDiscoveryListener(){ @Override publicvoidonDeviceLost(DeviceInfodeviceInfo){ } @Override publicvoidonDeviceFound(DeviceInfodeviceInfo){ Messagemsg=newMessage(); msg.what=0; msg.obj=deviceInfo; defiveFindHandler.sendMessage(msg); } @Override publicvoidonError(Stringerror,interrorCode){ LogUtil.errorLog(TAG,error+"errorCode: "+errorCode); } }; HandlerdefiveFindHandler=newHandler(){ publicvoidhandleMessage(Messagemsg){ if(msg.what==0){ DeviceInfodeviceInfo=(DeviceInfo)msg.obj; if(deviceInfo==null||deviceInfo.getState()==null){ LogUtil.debugLog(TAG,"接收到无效的bonjour信息为空"); return; } //设备序列号相等说明是我们要添加的设备否则不是 if(serialNo! =null&&serialNo.equals(deviceInfo.getSerialNo())){ if("WIFI".equals(deviceInfo.getState().name())){ if(isWifiConnected){ LogUtil.i(TAG,"defiveFindHandler: receiverWIFIwhileisWifiConnectedistrue"); return; } isWifiOkBonjourget=true; isWifiConnected=true; LogUtil.debugLog(TAG,"接收到设备连接上wifi信息"+deviceInfo.toString()); t2=System.currentTimeMillis(); stopWifiConfigOnThread(); changeStatuss(STATUS_REGISTING); }elseif("PLAT".equals(deviceInfo.getState().name())){ if(isPlatConnected){ LogUtil.i(TAG,"defiveFindHandler: receiverPLATwhileisPlatConnectedistrue"); return; } isPlatBonjourget=true; isPlatConnected=true; LogUtil.debugLog(TAG,"接收到设备连接上PLAT信息"+deviceInfo.toString()); t3=System.currentTimeMillis(); cancelOvertimeTimer(); changeStatuss(STATUS_ADDING_CAMERA); } } } }; }; 该回调用于处理WIFI和PLAT事件 WIFI表示设备已经连上WIFI,PLAT表示设备已经注册上平台。 一旦设备注册上平台之后,就可以调用addDevice进行添加 5.4设备预览 预览视频的代码参见src\com\videogo\ui\realplay\EZRealPlayActivity.java if(mCameraInfo! =null){ mEZPlayer=mEZOpenSDK.createPlayer(this,mCameraInfo.getCameraId()); if(mEZPlayer==null) return; mEZPlayer.setHandler(mHandler); mEZPlayer.setSurfaceHold(mRealPlaySh); mEZPlayer.startRealPlay(); } 代码说明: 1,创建EZPlayer对象需要一个cameraId,即摄像头的唯一id,这个cameraId可从EZCameraInfo对象中获取 2,需要创建一个handler,用于接收播放器消息,比如播放器播放成功,失败等消息 publicbooleanhandleMessage(Messagemsg){ switch(msg.what){ caseEZRealPlayConstants.MSG_REALPLAY_PLAY_SUCCESS: handlePlaySuccess(msg); break; caseEZRealPlayConstants.MSG_REALPLAY_PLAY_FAIL: handlePlayFail(msg.arg1,msg.arg2); break; } 3,播放需要一个surfaceView,因此在你的xmllayout文件重要放置一个SurfaceView android: id="@+id/realplay_play_rl" android: layout_width="match_parent" android: layout_height="wrap_content" android: layout_gravity="center" android: background="@color/black_bg"> android: id="@+id/realplay_sv" android: layout_width="600dp" android: layout_height="200dp" android: layout_alignParentTop="true" android: layout_centerInParent="false" android: background="@android: color/transparent"/> 在surface创建的过程中,保存SurfaceHolder对象: @Override publicvoidsurfaceCreated(SurfaceHolderholder){ if(mEZPlayer! =null){ mEZPlayer.setSurfaceHold(holder); } mRealPlaySh=holder; } 4,调用startRealPlay() 整个代码参见src\com\videogo\ui\realplay\EZRealPlayActivity.java 6.接口 6.1SDK整体接入流程 1.用户使用SDK初始化后的第一步是通过授权登录(中间页)openLoginPage获取accessToken的对象,当然用户也可以通过平台与平台的私有云接口获取; 2.通过EZOpenSDK的setAccessToken方法向SDK设置AccessToken; 3.然后可以通过设备列表接口获取设备信息; 4.针对设备预览、回放、设备操作(云台控制、设备显示设置)、查看报警列表等功能接口调用; 5.预览成功以后才能抓图、录像、开关声音; 6.语音对讲操作; 7.回放成功以后才能抓图、录像、开关声音; 8.WiFi配置之前要先通过设备序列号查询设备是否添加过。 注意: 开发者调用的主要接口都在EZOpenSDK.java和EZPlayer.java这2个类中 6.2SDK初始化 程序启动时初始化SDK,初始化时需要设置AppKey。 名称 booleaninitLib(Applicationapplication, StringappKey, StringloadLibraryAbsPath) 参数 @paramapplication客戶端app的Application對象 @paramappKey客戶端app申請的appkey @paramloadLibraryAbsPath指定.so库在sd卡的路径 返回值 @returntrue表示成功,false表示失败 版本 3.0 说明 SDK初始化 loadLibraryAbsPath如果需要将.so文件放在sd卡上,该参数指定路径 否则置空表示默认放在手机存储上 示例 在应用Application的onCreate回调函数中初始化SDK //正式平台设置 EZOpenSDK.initLib(this,APP_KEY,null);//设置APP_KEY 6.3登录模块 说明: 1,使用openLoginPage方法获取EZAccessToken对象accessToken; 2,把获取的AccessToken字符串通过setAccessToken方法对SDK进行accessToken设置; 3,用户可以存储accessToken在本地,以便下次启动时直接把accessToken的值设置到SDK 6.3.1打开登陆页 名称 voidopenLoginPage() 参数 返回值 void 版本 3.0 说明 打开授权登录中间页面 登录成功后发送播放com.videogo.action.OAUTH_SUCCESS_ACTION 示例 在收到OAUTH_SUCCESS_ACTION广播后的代码可以这么写: if(action.equals(Constant.OAUTH_SUCCESS_ACTION)){ IntenttoIntent=newIntent(context,EZCameraListActivity.class); toIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //保存token及token超时时间 EZAccessTokentoken=mEZOpenSdk.getEZAccessToken(); //保存token,获取超时时间,在token过期时重新获取 context.startActivity(toIntent);//启动cameralist 6.3.2setAccessToken 名称 voidsetAccessToken(StringaccessToken) 参数 String
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 萤石 开放 平台 SDKAndroid 开发 文档