海康网络摄像头android,海康网络摄像头的Android端Demo

【实例简介】海康网络摄像头的Android端Demo; 可实现通过wifi实时读取并显示摄像头捕捉的画面;

【实例截图】

4ceab34c26a6a8b842389bf59720d9ad.png

【核心代码】

/**

*

DemoActivity Class

* @author zhuzhenlei 2014-7-17

* @version V1.0

* @modificationHistory

* @modify by user:

* @modify by reason:

*/

package com.test.demo;

import java.io.FileOutputStream;

import java.text.SimpleDateFormat;

import org.MediaPlayer.PlayM4.Player;

import android.app.Activity;

import android.content.Context;

import android.graphics.PixelFormat;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.util.Log;

import android.view.Gravity;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.view.Surface;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.View.OnTouchListener;

import android.view.inputmethod.InputMethodManager;

import android.widget.Button;

import android.widget.EditText;

import android.widget.FrameLayout;

import com.hikvision.netsdk.COND_INT_PTR;

import com.hikvision.netsdk.ExceptionCallBack;

import com.hikvision.netsdk.HCNetSDK;

import com.hikvision.netsdk.INT_PTR;

import com.hikvision.netsdk.NET_DVR_CLIENTINFO;

import com.hikvision.netsdk.NET_DVR_COMPRESSIONCFG_V30;

import com.hikvision.netsdk.NET_DVR_COND_INT;

import com.hikvision.netsdk.NET_DVR_CONFIG;

import com.hikvision.netsdk.NET_DVR_DEVICEINFO_V30;

import com.hikvision.netsdk.NET_DVR_EZVIZ_USER_LOGIN_INFO;

import com.hikvision.netsdk.NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO;

import com.hikvision.netsdk.NET_DVR_PLAYBACK_INFO;

import com.hikvision.netsdk.NET_DVR_PREVIEWINFO;

import com.hikvision.netsdk.NET_DVR_SCREEM_FILE_DOWNLOAD_PARAM;

import com.hikvision.netsdk.NET_DVR_SCREEN_CONTROL_V41;

import com.hikvision.netsdk.NET_DVR_SCREEN_FILE_INFO;

import com.hikvision.netsdk.NET_DVR_SCREEN_RESPONSE_CMD;

import com.hikvision.netsdk.NET_DVR_TIME;

import com.hikvision.netsdk.NET_DVR_VIDEOWALLWINDOWPOSITION;

import com.hikvision.netsdk.NET_DVR_XML_CONFIG_INPUT;

import com.hikvision.netsdk.NET_DVR_XML_CONFIG_OUTPUT;

import com.hikvision.netsdk.NET_SDK_CALLBACK_TYPE;

import com.hikvision.netsdk.NET_SDK_DOWNLOAD_TYPE;

import com.hikvision.netsdk.PTZCommand;

import com.hikvision.netsdk.PlaybackCallBack;

import com.hikvision.netsdk.PlaybackControlCommand;

import com.hikvision.netsdk.RealPlayCallBack;

import com.hikvision.netsdk.RemoteConfigCallback;

/**

*

 
 

* ClassName DemoActivity Class

*

*

* @author zhuzhenlei

* @version V1.0

* @modificationHistory

*/

public class DemoActivity extends Activity implements Callback {

private Button m_oLoginBtn = null;

private Button m_oPreviewBtn = null;

private Button m_oPlaybackBtn = null;

private Button m_oParamCfgBtn = null;

private Button m_oCaptureBtn = null;

private Button m_oRecordBtn = null;

private Button m_oTalkBtn = null;

private Button m_oPTZBtn = null;

private Button m_oOtherBtn = null;

private SurfaceView m_osurfaceView = null;

private EditText m_oIPAddr = null;

private EditText m_oPort = null;

private EditText m_oUser = null;

private EditText m_oPsd = null;

private NET_DVR_DEVICEINFO_V30 m_oNetDvrDeviceInfoV30 = null;

private int m_iLogID = -1; // return by NET_DVR_Login_v30

private int m_iPlayID = -1; // return by NET_DVR_RealPlay_V30

private int m_iPlaybackID = -1; // return by NET_DVR_PlayBackByTime

private int m_iPort = -1; // play port

private int m_iStartChan = 0; // start channel no

private int m_iChanNum = 0; // channel number

private static PlaySurfaceView[] playView = new PlaySurfaceView[4];

private final String TAG = "DemoActivity";

private boolean m_bTalkOn = false;

private boolean m_bPTZL = false;

private boolean m_bMultiPlay = false;

private boolean m_bNeedDecode = true;

private boolean m_bSaveRealData = false;

private boolean m_bStopPlayback = false;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

CrashUtil crashUtil = CrashUtil.getInstance();

crashUtil.init(this);

setContentView(R.layout.main);

if (!initeSdk()) {

this.finish();

return;

}

if (!initeActivity()) {

this.finish();

return;

}

m_oIPAddr.setText("10.17.132.49");

m_oPort.setText("8000");

m_oUser.setText("admin");

m_oPsd.setText("hik12345");

}

// @Override

public void surfaceCreated(SurfaceHolder holder) {

m_osurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

Log.i(TAG, "surface is created" m_iPort);

if (-1 == m_iPort) {

return;

}

Surface surface = holder.getSurface();

if (true == surface.isValid()) {

if (false == Player.getInstance()

.setVideoWindow(m_iPort, 0, holder)) {

Log.e(TAG, "Player setVideoWindow failed!");

}

}

}

// @Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

}

// @Override

public void surfaceDestroyed(SurfaceHolder holder) {

Log.i(TAG, "Player setVideoWindow release!" m_iPort);

if (-1 == m_iPort) {

return;

}

if (true == holder.getSurface().isValid()) {

if (false == Player.getInstance().setVideoWindow(m_iPort, 0, null)) {

Log.e(TAG, "Player setVideoWindow failed!");

}

}

}

@Override

protected void onSaveInstanceState(Bundle outState) {

outState.putInt("m_iPort", m_iPort);

super.onSaveInstanceState(outState);

Log.i(TAG, "onSaveInstanceState");

}

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

m_iPort = savedInstanceState.getInt("m_iPort");

super.onRestoreInstanceState(savedInstanceState);

Log.i(TAG, "onRestoreInstanceState");

}

/**

* @fn initeSdk

* @author zhuzhenlei

* @brief SDK init

* @param NULL

* [in]

* @param NULL

* [out]

* @return true - success;false - fail

*/

private boolean initeSdk() {

// init net sdk

if (!HCNetSDK.getInstance().NET_DVR_Init()) {

Log.e(TAG, "HCNetSDK init is failed!");

return false;

}

HCNetSDK.getInstance().NET_DVR_SetLogToFile(3, "/mnt/sdcard/sdklog/",

true);

return true;

}

// GUI init

private boolean initeActivity() {

findViews();

m_osurfaceView.getHolder().addCallback(this);

setListeners();

return true;

}

// get controller instance

private void findViews() {

m_oLoginBtn = (Button) findViewById(R.id.btn_Login);

m_oPreviewBtn = (Button) findViewById(R.id.btn_Preview);

m_oPlaybackBtn = (Button) findViewById(R.id.btn_Playback);

m_oParamCfgBtn = (Button) findViewById(R.id.btn_ParamCfg);

m_oCaptureBtn = (Button) findViewById(R.id.btn_Capture);

m_oRecordBtn = (Button) findViewById(R.id.btn_

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要编写一个用Python搜索海康网络摄像头的程序,可以使用以下步骤实现: 1. 导入所需的Python库:例如requests库用于发送HTTP请求,json库用于处理返回的JSON数据。 2. 构建搜索请求:通过发送POST请求到网络摄像头的搜索接口,可以获取附近可用的摄像头列表。可以使用requests库中的`requests.post()`方法发送POST请求,指定目标IP地址和口号,以及请求的路径。例如: ```python import requests url = "http://摄像头IP地址:口号/ISAPI/ContentMgmt/Search" payload = { "searchResultPosition": 0, "maxResults": 10 } # 可自行根据需求修改搜索参数 headers = { 'Content-Type': 'application/json' } response = requests.post(url, json=payload, headers=headers) ``` 3. 处理返回的结果:从返回的响应中提取摄像头列表信息。可以使用`response.json()`方法将返回的JSON数据转换为Python字典格式,然后遍历摄像头列表获取所需的信息。例如: ```python data = response.json() camera_list = data.get("searchResultList") for camera in camera_list: camera_name = camera.get("cameraName") camera_ip = camera.get("ipAddress") camera_port = camera.get("port") # 可根据需求进一步处理摄像头信息 print(f"摄像头名称:{camera_name},IP地址:{camera_ip},口号:{camera_port}") ``` 以上就是使用Python编写搜索海康网络摄像头的简单程序。注意,程序中的IP地址、口号以及搜索参数等需要根据实际情况进行修改。在编写代码时要确保摄像头的搜索接口地址正确且网络连接正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值