Android 集成海康威视监控 SDK,实现监控录像的查看

配置

切换Android studio 到project目录下,分别将jar包与armeabi包复制进去lib文件夹下:

设置app bulid.gradle文件 主要是添加CPU限制 只支持32位 以及添加so包的路径、添加jar包依赖:

添加权限

  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  3. <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
  4. <uses-permission android:name="android.permission.RECORD_AUDIO"/>

SDK使用

在调用摄像头的Activity的oncreate()中初始化SDK

private boolean initeSdk() {// init net sdkif (!HCNetSDK.getInstance().NET_DVR_Init()) {Log.e(TAG, "HCNetSDK init is failed!");return false;}HCNetSDK.getInstance().NET_DVR_SetLogToFile(3, "/mnt/sdcard/sdklog/",true);//log保存的路径return true;
}

登陆

private int loginNormalDevice() {// get instancem_oNetDvrDeviceInfoV30 = new NET_DVR_DEVICEINFO_V30();if (null == m_oNetDvrDeviceInfoV30) {Log.e(TAG, "HKNetDvrDeviceInfoV30 new is failed!");return -1;}// call NET_DVR_Login_v30 to login on, port 8000 as defaultint iLogID = HCNetSDK.getInstance().NET_DVR_Login_V30(ADDRESS, PORT,USER, PSD, m_oNetDvrDeviceInfoV30);if (iLogID < 0) {Log.e(TAG, "NET_DVR_Login is failed!Err:"+ HCNetSDK.getInstance().NET_DVR_GetLastError());return -1;}if (m_oNetDvrDeviceInfoV30.byChanNum > 0) {m_iStartChan = m_oNetDvrDeviceInfoV30.byStartChan;m_iChanNum = m_oNetDvrDeviceInfoV30.byChanNum;} else if (m_oNetDvrDeviceInfoV30.byIPChanNum > 0) {m_iStartChan = m_oNetDvrDeviceInfoV30.byStartDChan;m_iChanNum = m_oNetDvrDeviceInfoV30.byIPChanNum+ m_oNetDvrDeviceInfoV30.byHighDChanNum * 256;}Log.i(TAG, "NET_DVR_Login is Successful!");return iLogID;
}

相机预览

//预览
final NET_DVR_PREVIEWINFO ClientInfo = new NET_DVR_PREVIEWINFO();
ClientInfo.lChannel = 0;
ClientInfo.dwStreamType = 0; // substream
ClientInfo.bBlocked = 1;
//设置默认点
thread = new Thread(new Runnable() {@Overridepublic void run() {while (!Thread.currentThread().isInterrupted()) {SystemClock.sleep(1000);runOnUiThread(new Runnable() {@Overridepublic void run() {if (isShow)startSinglePreview();//预览}});}}
});
thread.start();

预览摄像头需要开启线程,监听预览成功后停止线程,不然界面会显示黑色。

startSinglePreview()代码:

private void startSinglePreview() {if (m_iPlaybackID >= 0) {Log.i(TAG, "Please stop palyback first");return;}RealPlayCallBack fRealDataCallBack = getRealPlayerCbf();if (fRealDataCallBack == null) {Log.e(TAG, "fRealDataCallBack object is failed!");return;}Log.i(TAG, "m_iStartChan:" + m_iStartChan);NET_DVR_PREVIEWINFO previewInfo = new NET_DVR_PREVIEWINFO();previewInfo.lChannel = m_iStartChan;previewInfo.dwStreamType = 0; // substreampreviewInfo.bBlocked = 1;m_iPlayID = HCNetSDK.getInstance().NET_DVR_RealPlay_V40(m_iLogID,previewInfo, fRealDataCallBack);if (m_iPlayID < 0) {Log.e(TAG, "NET_DVR_RealPlay is failed!Err:"+ HCNetSDK.getInstance().NET_DVR_GetLastError());return;}isShow = false;if (NotNull.isNotNull(thread)) {thread.interrupt();}h1 = new CameraManager();h1.setLoginId(m_iLogID);Intent intent = getIntent();if (NotNull.isNotNull(intent) && intent.getIntExtra("INDEX", -1) != -1) {int point = app.preferences.getInt("POINT", 0);boolean b = HCNetSDK.getInstance().NET_DVR_PTZPreset(m_iPlayID, PTZCommand.GOTO_PRESET,point);}
}

控制台操作

@Override
public boolean onTouch(final View v, final MotionEvent event) {if (!NotNull.isNotNull(h1)) return false;Log.d(TAG, "onTouch: ");new Thread() {@Overridepublic void run() {switch (v.getId()) {case R.id.btn_Up:if (event.getAction() == MotionEvent.ACTION_DOWN) {h1.startMove(8, m_iLogID);}if (event.getAction() == MotionEvent.ACTION_UP) {h1.stopMove(8, m_iLogID);}break;case R.id.btn_Left:if (event.getAction() == MotionEvent.ACTION_DOWN) {h1.startMove(4, m_iLogID);}if (event.getAction() == MotionEvent.ACTION_UP) {h1.stopMove(4, m_iLogID);}break;case R.id.btn_Right:if (event.getAction() == MotionEvent.ACTION_DOWN) {h1.startMove(6, m_iLogID);}if (event.getAction() == MotionEvent.ACTION_UP) {h1.stopMove(6, m_iLogID);}break;case R.id.btn_Down:if (event.getAction() == MotionEvent.ACTION_DOWN) {h1.startMove(2, m_iLogID);}if (event.getAction() == MotionEvent.ACTION_UP) {h1.stopMove(2, m_iLogID);}break;case R.id.btn_ZoomIn:if (event.getAction() == MotionEvent.ACTION_DOWN) {h1.startZoom(1, m_iLogID);}if (event.getAction() == MotionEvent.ACTION_UP) {h1.stopZoom(1, m_iLogID);}break;case R.id.btn_ZoomOut:if (event.getAction() == MotionEvent.ACTION_DOWN) {h1.startZoom(-1, m_iLogID);}if (event.getAction() == MotionEvent.ACTION_UP) {h1.stopZoom(-1, m_iLogID);}break;default:break;}}}.start();return false;
}
/*** 停止移动 NET_DVR_PTZControl_Other参数:(播放标记, 通道, 指令码, 开始标记0或停止标记1)** @param orientation 九宫格数字方向*/
public void stopMove(int orientation, int m_iLogID) {if (m_iLogID < 0) {return;}switch (orientation) {case 9:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.UP_RIGHT, 1);break;case 8:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.TILT_UP, 1);break;case 7:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.UP_LEFT, 1);break;case 6:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.PAN_RIGHT, 1);break;case 5:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.PAN_AUTO, 1);break;case 4:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.PAN_LEFT, 1);break;case 3:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.DOWN_RIGHT, 1);break;case 2:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.TILT_DOWN, 1);break;case 1:HCNetSDK.getInstance().NET_DVR_PTZControl_Other(m_iLogID, 1,PTZCommand.DOWN_LEFT, 1);break;default:break;}
}

说得再多不如代码一坨

Github传送门

以上讲的是旧版本,转自 wangguan_9527   博客地址  海康威视 Android studio 集成使用_wangguan_9527的博客-CSDN博客

2022年新版本:

SDK(代码比较繁琐,不易看懂)地址:海康开放平台(设备网络SDK_Android V6.1.9.4_build20220412)

对sdk进行了缩减,源码地址:HKSDK_demo: 2022年Android版海康威视摄像头视频最新版sdk接入。

Android 集成海康威视监控 SDK,实现监控录像的查看相关推荐

  1. Android集成百度地图SDK

    本Demo中所含功能 1:定位,显示当前位置 2:地图多覆盖物(地图描点,弹出该点的详细信息) 3:坐标地址互相换算 4:POI兴趣点检索 5:线路查询(步行,驾车,公交) 6:绘制线路(OpenGL ...

  2. Android集成极光聊天SDK

    1.前往官网注册应用 2.添加依赖 //极光统计 implementation 'cn.jiguang.sdk:jmessage:2.9.0' implementation 'cn.jiguang.s ...

  3. Android 集成高德地图SDK

    今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能 =-= 第一步:引入高德地图的SDK. 首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新 ...

  4. Android集成微信支付SDK,实现支付功能

    官方集成文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5# 一.在您 App Module 的 build.gra ...

  5. Android集成支付宝支付SDK,实现支付功能

    官方集成文档地址:https://docs.open.alipay.com/204/105296/ 一.导入支付宝SDK 1.将 alipaySdk-15.6.5-20190718211159.aar ...

  6. Android集成谷歌定位sdk,概述-Android 定位SDK | 高德地图API

    什么是定位SDK Android 定位 SDK 是一套简单的LBS服务定位接口,您可以使用这套定位API获取定位结果.逆地理编码(地址文字描述).以及地理围栏功能. 面向的读者 Android 定位 ...

  7. android 支付模块封装,Android集成支付----支付宝支付总结与封装

    前言 类似于Android集成支付----微信支付总结与封装(可以查看本人另外一篇文章),本文对支付宝支付进行一个总结与封装.相比于微信支付,支付宝支付没有那么多坑. 集成支付宝支付SDK 这里只是简 ...

  8. vue-element-admin 集成海康威视监控插件VideoWebPlugin

    项目场景: 项目为智慧园区后台管理系统 需求 全部摄像头实时监控&&单个监控直播&&单个监控回放 集成 海康威视监控 WEB插件 网上有非常多的资源代码实例 大多数还需 ...

  9. Android apm监控框架,移动性能监控 SDK 详细集成文档

    移动性能监控 SDK 详细集成文档 一. Gradle配置 在 Project 的 build.gradle 文件中添加ArgusAPM的相关配置,示例如下: 在项目根目录的 build.gradle ...

最新文章

  1. 一套基础自动化部署搭建过程
  2. ubuntu14.04下使用A3E生成satg配置
  3. DebugView调试C#程序 学习总结
  4. Hive分区、分桶操作及其比较(转自:http://blog.csdn.net/epitomizelu/article/details/41911657)
  5. listview侧滑删除
  6. 模板:k短路(可并堆)
  7. JavaScript Function.arguments 属性详解
  8. php箱子,webshell箱子php版本.rar
  9. Maven 私服 Version policy mismatch, cannot upload SNAPSHOT content to RELEASE repositories for file‘0’
  10. 软件2.0时代来了!特斯拉AI负责人说:神经网络正在改变编程
  11. 超出想象-超级终端显示器
  12. 学习数据库(1)——初始数据库
  13. 科技文献检索(七)——检索工具
  14. 9月14日-全外显子组测序分析流程
  15. BilibiliVideoDownload for Mac(B站视频下载工具)
  16. android 控制空调,控制精灵空调遥控器
  17. 织梦如何添html5播放器,织梦ckplayer视频播放器插件的介绍与使用
  18. 怎么提高截屏图片分辨率?照片分辨率低如何做成高清?
  19. 异地局域网对接:异地组网原理与实操
  20. DPI、PPI、DP、PX 的详细计算方法及算法来源是什么

热门文章

  1. Selenium启动常用浏览器
  2. 嵌入式基础接口-I2S
  3. lamp架构(一台主机)
  4. 运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现...
  5. GIS从矢量数据快速生成建筑和地形
  6. Google Earth Engine——全球建筑物GlobalMLBuildingFootprints矢量集合下载
  7. 常用的脚本语言有哪些
  8. 【阿里云ECS进阶训练营】day07基于ECS和NAS搭建个人网盘
  9. web项目---severlet简介
  10. 组合的json嵌套文件分割或者拆分