海康sdk远程门禁_海康威视远程监控Android端SDK调用示例
上一篇文章写了《海康威视远程监控Android端APP开发初探》,闲来又整理了一下demo,现在把demo工程的源码发上来,大家一起学习:
工程源文件三个:
1、MonitorCameraInfo.java(监控点信息类)
2、Sjrs08SurfaceView.java(继承自SurfaceView,用来播放视频并显示)
3、VideoShowActivity(主activity)
布局文件一个:
activity_main.xml
AndroidManifest.xml中只需定义一项网络访问的权限:
下面是源代码:
1、MonitorCameraInfo.java
package com.sjrs08.HCNetSDK.Player.demo;
public class MonitorCameraInfo {
public String serverip = "";
public int serverport = 0;
public String username = "";
public String userpwd = "";
public int channel = 0;
public String describe = "";
public MonitorCameraInfo() {
}
}
2、Sjrs08SurfaceView.java
package com.sjrs08.HCNetSDK.Player.demo;
import org.MediaPlayer.PlayM4.Player;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import com.hikvision.netsdk.ExceptionCallBack;
import com.hikvision.netsdk.HCNetSDK;
import com.hikvision.netsdk.NET_DVR_CLIENTINFO;
import com.hikvision.netsdk.NET_DVR_DEVICEINFO_V30;
import com.hikvision.netsdk.RealPlayCallBack;
public class Sjrs08SurfaceView extends SurfaceView implements
SurfaceHolder.Callback {
private HCNetSDK videoCtr; //网络库sdk
private Player myPlayer = null; //播放库sdk
private int playPort = -1; //播放端口
public boolean playFlag = false; //播放标志
private int userId = -1; //登录帐号id
private MonitorCameraInfo cameraInfo = null; //监控点信息
private SurfaceHolder holder = null;
public Sjrs08SurfaceView(Context paramContext) {
super(paramContext);
initSurfaceView();
}
public Sjrs08SurfaceView(Context paramContext,
AttributeSet paramAttributeSet) {
super(paramContext, paramAttributeSet);
initSurfaceView();
}
public Sjrs08SurfaceView(Context paramContext,
AttributeSet paramAttributeSet, int paramInt) {
super(paramContext, paramAttributeSet);
initSurfaceView();
}
private void initSurfaceView() {
getHolder().addCallback(this);
}
public boolean onDown(MotionEvent paramMotionEvent) {
return false;
}
public boolean onFling(MotionEvent paramMotionEvent1,
MotionEvent paramMotionEvent2, float paramFloat1, float paramFloat2) {
return false;
}
public void onLongPress(MotionEvent paramMotionEvent) {
}
public boolean onScroll(MotionEvent paramMotionEvent1,
MotionEvent paramMotionEvent2, float paramFloat1, float paramFloat2) {
return false;
}
public void onShowPress(MotionEvent paramMotionEvent) {
}
public boolean onSingleTapUp(MotionEvent paramMotionEvent) {
return false;
}
public void surfaceChanged(SurfaceHolder paramSurfaceHolder, int paramInt1,
int paramInt2, int paramInt3) {
}
public void surfaceCreated(SurfaceHolder paramSurfaceHolder) {
holder = this.getHolder();
}
public void surfaceDestroyed(SurfaceHolder paramSurfaceHolder) {
}
public void setMonitorInfo(MonitorCameraInfo setMonitorInfo) {
this.cameraInfo = setMonitorInfo;
}
/**
* 时间如水2013-7-10
* 功能:暂定播放
* flag 1/暂停 0/恢复
*/
public void pausePaly(int flag) {
myPlayer.pause(playPort, flag);
}
public void stopPlay() {
try {
playFlag = false;
videoCtr.NET_DVR_StopRealPlay(playPort);
videoCtr.NET_DVR_Logout_V30(userId);
userId = -1;
videoCtr.NET_DVR_Cleanup();
if (myPlayer != null) {
myPlayer.stop(playPort);
myPlayer.closeStream(playPort);
myPlayer.freePort(playPort);
playPort = -1;
destroyDrawingCache();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
/**
* 时间如水2013-7-10
* 功能:开始实时预览*/
public void startPlay() {
try {
// 实例化播放API
myPlayer = Player.getInstance();
// 实例化海康威视android sdk
videoCtr = new HCNetSDK();
videoCtr.NET_DVR_Init(); //初始化海康威视android sdk
videoCtr.NET_DVR_SetExceptionCallBack(mExceptionCallBack); //设置错误回掉函数
// 设置连接超时时长
videoCtr.NET_DVR_SetConnectTime(60000);
playPort = myPlayer.getPort(); //获取空闲播放端口
NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30();
// 登录服务器
userId = videoCtr.NET_DVR_Login_V30(cameraInfo.serverip,
cameraInfo.serverport, cameraInfo.username,
cameraInfo.userpwd, deviceInfo);
System.out.println("下面是设备信息************************");
System.out.println("通道开始=" + deviceInfo.byStartChan);
System.out.println("通道个数=" + deviceInfo.byChanNum);
System.out.println("设备类型=" + deviceInfo.byDVRType);
System.out.println("ip通道个数=" + deviceInfo.byIPChanNum);
byte[] sbbyte = deviceInfo.sSerialNumber;
String sNo = "";
for (int i = 0; i < sbbyte.length; i++) {
sNo += String.valueOf(sbbyte[i]);
}
System.out.println("设备序列号=" + sNo);
System.out.println("************************");
NET_DVR_CLIENTINFO clientInfo = new NET_DVR_CLIENTINFO();
clientInfo.lChannel = cameraInfo.channel;
clientInfo.lLinkMode = 0x80000000; // 子码流,保证图像实时性
clientInfo.sMultiCastIP = null;
int playFlag = videoCtr.NET_DVR_RealPlay_V30(userId, clientInfo,
mRealPlayCallBack, false);
System.out.println("playFlag=" + playFlag);
System.out.println("GetLastError="
+ videoCtr.NET_DVR_GetLastError());
} catch (Exception e) {
e.printStackTrace();
stopPlay();
}
}
private ExceptionCallBack mExceptionCallBack = new ExceptionCallBack() {
@Override
public void fExceptionCallBack(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
System.out.println("异常回掉函数运行!");
}
};
private RealPlayCallBack mRealPlayCallBack = new RealPlayCallBack() {
@Override
public void fRealDataCallBack(int lRealHandle, int dataType,
byte[] paramArrayOfByte, int byteLen) {
// TODO Auto-generated method stub
// System.out.println("playFlag=" + playFlag + ",dataType=" +
// dataType + ",大小=" + byteLen + "字节,playPort=" + playPort);
if (playPort == -1)
return;
switch (dataType) {
case 1: // 头数据
if (myPlayer.openStream(playPort, paramArrayOfByte, byteLen,
1024 * 1024)) {
if (myPlayer.setStreamOpenMode(playPort, 1)) {
if (myPlayer.play(playPort, holder)) {
playFlag = true;
} else {
playError(3);
}
} else {
playError(2);
}
} else {
playError(1);
}
break;
case 4:
if (playFlag
&& myPlayer.inputData(playPort, paramArrayOfByte,
byteLen)) {
playFlag = true;
} else {
playError(4);
playFlag = false;
}
}
}
};
private void playError(int step) {
switch (step) {
case 1:
System.out.println("openStream error,step=" + step);
break;
case 2:
System.out.println("setStreamOpenMode error,step=" + step);
break;
case 3:
System.out.println("play error,step=" + step);
break;
case 4:
System.out.println("inputData error,step=" + step);
break;
}
stopPlay();
}
}
3、VideoShowActivity
package com.sjrs08.HCNetSDK.Player.demo;
import android.app.Activity;
import android.os.Bundle;
public class VideoShowActivity extends Activity {
Sjrs08SurfaceView nowSjrs08SurfaceView; //SurfaceView对象,用来显示视频
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nowSjrs08SurfaceView = (Sjrs08SurfaceView) findViewById(R.id.video_0);
}
@Override
protected void onResume() {
super.onResume();
if (!nowSjrs08SurfaceView.playFlag) { //如果没有在播放的话
MonitorCameraInfo cameraInfo = new MonitorCameraInfo();
cameraInfo.serverip = "192.168.0.100";
cameraInfo.serverport = 8000;
cameraInfo.username = "ceshiadmin";
cameraInfo.userpwd = "123456";
cameraInfo.channel = 1;
cameraInfo.describe = "测试点";
nowSjrs08SurfaceView.setMonitorInfo(cameraInfo);
nowSjrs08SurfaceView.startPlay(); //开始实时预览
}
}
@Override
protected void onPause() {
super.onPause();
if (nowSjrs08SurfaceView.playFlag) {
nowSjrs08SurfaceView.stopPlay(); //停止实时预览
}
}
}
4、activity_main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/video_0"
android:layout_width="400dp"
android:layout_height="300dp"
android:layout_alignParentLeft="true" />
海康sdk远程门禁_海康威视远程监控Android端SDK调用示例相关推荐
- micropython驱动lcd触摸屏_Micropython之萝卜狗远程门禁控制系统
原标题:Micropython之萝卜狗远程门禁控制系统 * 本文作者:_橙子 ゝ,本文属FreeBuf原创奖励计划,未经许可禁止转载 当代社会,我们进公司需要门禁卡,出入小区需要门禁卡,门禁系统又称出 ...
- 51单片机ESP8266WIFI远程门禁密码锁可修改密码APP开锁查看密码
实践制作DIY- GC003-WIFI远程门禁密码 一.功能说明: 基于51单片机设计-WIFI远程门禁密码锁 二.功能介绍: 1.基于STC89C52RC,有一个LCD1602显示器显示信息, ...
- Python 调用中控门禁并包装成webservice供移动设备调用。
前段时间做了个小试验,用Python 调用中控门禁并包装成webservice供移动设备调用. 移动端用的是泛微的OA企业微信端. 实现手机远程开门效果,拿着手机,走到哪,哪的门就自动开了,很屌的样子 ...
- python人脸识别门禁_树莓派人脸识别门禁系统图文教程
前面发布了人脸识别门禁系统的系列视频教程,现在补上图文版,方便查看指令和代码,这篇文章也是对之前的文章的更新与完善. 本系统中树莓派调用百度智能云人脸识别API,实现人脸识别门禁,主要分为三个模块来实 ...
- python人脸识别门禁系统毕设_树莓派人脸识别门禁系统代码以及代码分析——opencv拍照调用FACE++处理...
树莓派人脸识别门禁系统的总体设计 硬件包括:树莓派3B.电源模块.转5V降压模块.触摸感应传感器模块.声光报警模块和驱动模块. 由此设计出的人脸识别门禁系统总体结构框图如下: 总体结构框图 程序运行时 ...
- 海康网络摄像头忘记密码_不要忘记网络性能
海康网络摄像头忘记密码 Amazon released a famous statement in the late 2000s stating that every hundred millisec ...
- micropython远程升级_Micropython之萝卜狗远程门禁控制系统
严正声明:本文仅限于技术讨论与分享,严禁用于非法用途 当代社会,我们进公司需要门禁卡,出入小区需要门禁卡,门禁系统又称出入管理控制系统(ACCESS CONTROL SYSTEM), 是一种管理人员进 ...
- 人脸识别门禁_门禁人脸识别系统铜陵县门禁人脸识别系统哪家好
门禁人脸识别系统铜陵县门禁人脸识别系统哪家好 工地 1.建筑工地使用人脸识别门禁考勤机解决问题:工人刷脸出入,刷脸考勤,杜绝虚假考勤,提高考勤效率,工人工种分组,实名制管理. 2.人脸识别测温一体机用 ...
- 人脸识别门禁_小区人脸识别门禁或取代传统门禁刷卡方式
可以说,社区是一个人口聚集的小型社会.首先社区的人流量很大,进出是十分频繁.其次,社区的大门以及各处进出口是业主与访客.外来人员等进进出出最关键的通道.因此,每个社区都会有一套成型的门禁系统,常见的是 ...
- java tcp门禁_门禁控制器的TCP/IP协议功能
原标题:门禁控制器的TCP/IP协议功能 门禁控制器的TCP/IP协议功能 Linux支持多种不同的网络协议,TCP/IP是Linux系统中最健壮.速度最快和最可靠的部分.TCP/IP协议包括了各个层 ...
最新文章
- 用oracle存储过程取一张表里的数据放入其他表 游标取值
- linux 发行版 suse opensuse 区别
- Servlet学习一
- 微软.Net Core 3.0 预览版7发布:大幅减少 SDK 空间大小
- 互换性与技术测量教材pdf_【检验】临床生物化学检验技术(第6版)人民卫生出版社【电子教材PDF】【人卫教材电子版】...
- 家长必看 父母须知孩子社交圈九要点(组图)
- OpenJudge NOI 1.5 37:雇佣兵
- Magento教程 1:免费购物车系统,轻松建立Magento第一步!
- 男人有钱还是没钱,只需要关注他这三点,就明白了
- 数据建模的的参考工具EZDML
- DB2 SqlCode对照表
- python在经济学的应用_『经济学在读研究生学习python可以用来做什么』python经济应用教程...
- 计算机固态硬盘装系统,固态硬盘如何装系统
- 投影仪怎么看电视直播?安装这些软件带你共享2022世界杯盛宴
- 订阅号如何获取用户openid
- HEVC码率控制代码分析
- Android studio 设置豆绿色
- Latex-加通讯作者的小信封标记
- Linux常用过滤命令之grep命令的使用
- ios设备苹果手机 js时间字符串转时间戳后显示错误NAN