Android标准化Demo
Android标准化Demo基于OpenSDK组件实现了慧视云音视频相关的核心功能。建议开发者阅读Demo源代码,作为参考或者移植到自己项目中,有助于快速集成。
1. 功能描述
获取设备列表:获取绑定的中维协议3.0(原公有云协议)设备和国标设备。
设备详情:设备解绑、网络配置等。
实时预览:视频播放、语音对讲、抓图、本地录制等。
录像回放:云录像/设备录像回放、倍速播放等。
绑定设备:支持扫码添加和通过设备号添加。
详细流程:
2. 环境搭建
以Demo为例,为开发者介绍项目的工程配置。Demo工程支持Android SDK17以上编译调试。
2.1 添加SO库
使用默认配置,不需要修改build.gradle。在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录。jni文件放在com.jovision.jvplayer目录下即可。如图所示:
2.2配置权限
在AndroidManifest.xml中配置权限:
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3. 工程依赖库
3.1 工程依赖第三方库
RxBinding(包括RxJava和RxAndroid)
retrofit2、okhttp(网络库)
SwipeDelMenuLayou (侧滑删除)
zxing (二维码编解码库)
calendarview (日历控件三方库)
SmartRefreshLayout(下拉刷新库)
easypermissions (权限库)
4. 获取accessToken
获取设备列表之前,需要先获取assessToken,成功获取token后可刷新设备列表。获取token方法在SettingActivity.java中
private void loadToken(String server, String appKey, String appSecret)
5. 获取设备列表
成功获取token后,调用获取设备列表接口,返回设备列表信息。建议创建设备模型方便后续存取使用。
6. 设备添加配网以及设备删除
设备添加流程如下:
1.选择接入设备类型中维协议3.0(原公有云协议)设备或者国标设备。
中维协议3.0(原公有云协议)设备支持扫码添加设备,扫码失败可以点击下方按钮手动输入设备号配网添加。
国标设备只支持手动输入设备信息配网添加。
- 信息输入完成后调用添加设备接口
/**
* 添加设备
*
* @param params
*/
public Observable<ResponseData<bean>> addDevice(HashMap<String, Object> params) {
return loadData(Consts.addDevice, params, new TypeToken<bean>() {
}.getType());
}
/**
* 添加国标设备
* @param params
* @return
*/
public Observable<ResponseData<GBInfo>> addGBDevice(HashMap<String, Object> params) {
return loadData(Consts.addGBDevice, params, new TypeToken<GBInfo>() {
}.getType());
}
- 设备解绑调用设备删除接口
/**
* 删除设备
*
* @param params
*/
public Observable<ResponseData<bean>> deleteDevice(HashMap<String, Object> params) {
return loadData(Consts.deleteDevice, params, new TypeToken<bean>() {
}.getType());
}
7. 实时预览
在C2PlayHelper
中的private void getPlayInfo()
方法中获取直播了地址,然后调用jni
的javPlayerConnect
连接设备播放视频流。具体实现参考Demo源码。
8. 语音对讲
在JVMultiPlayActivity
中的private void switchCall()
方法获取对讲地址,然后调用jni
的javPlayerIntercomStart
连接设备开始对讲。具体实现参考Demo源码。
9. 设备录像查询回放
在JVBaseRemoteLinePlayActivity
中的private void searchRecord()
方法查询回放列表,然后通过private void playRecord(String start_time, String end_time)
方法获取录像回放地址,然后调用jni
的javPlayerPlayRecord
连接设备播放回放视频。具体参考Demo源码。
10. 设备录像下载
在JVBaseRemoteLinePlayActivity
中的private void requestRecordDownloadUrl()
方法获取录像下载地址,通过调用jni
的javPlayerDownloadTimeStart
开始下载录像文件到设备。具体实现参考Demo源码。
11. 云录像查询回放
在JVBaseRemoteLinePlayActivity
中的private void searchRecord()
方法查询云录像列表。然后通过private void playRecord(String start_time, String end_time)
方法获取录像回放地址,然后调用jni
的javPlayerConnect
连接设备播放回放视频。具体参考Demo源码。
12. 云台控制
在JVMultiPlayActivity
中的public void ptzMoveStart(int left, int up, int zoom)
方法实现云台上下左右移动,具体参考Demo源码。
13. 注意事项
由于Demo已实现大部分监控安防功能,已能满足基础需求,但请勿直接上传google play。
google play上架会进行代码重复率机审与界面相似度人工审查,如发现重复相似度高被强制下架
因此,我们鼓励开发者在开放平台Demo基础上进行代码/界面调整,或者基于openSDK/开放平台API进行完整开发。
14. 测试推荐
14.1 推荐使用设备
使用规格为C7LE、慧视云7324NVR;
国标海康枪机IPC、国标大华球机IPC、国标大华枪机IPC、国标大华NVR;
14.2 推荐使用Android版本及手机
Android Demo适用于Android9/10/11系统
一加7Pro(Android9高通骁龙855,3120x1440);
MEIZU16T(Android9高通骁龙855,2232x1080);
小米cc9(Android10骁龙710,1080x2340);
oppofindx(Android11,高通骁龙845,2340x1080);
三星GalaxyA905G(Android11,高通骁龙855,1080x2400);