QGC 中添加海康威视摄像头记录(Qt For Android 使用 JNI 进行JAVA 与 C++ 的通讯)

文章目录

  • 1. 配置
    • 海康威视 SDK 下载
    • 库文件移植
    • 工程文件添加动态库(.so)
    • Android xml 配置
    • 添加 java 文件
  • 2. Java
    • QGCActivity.java
    • HkwsManager.java
  • 3. C++
    • 头文件添加:
    • C++ 中调用 Java 静态函数(hcnNetSDKInit)
    • JNI 传入规则
    • 【学习链接】

1. 配置

海康威视 SDK 下载

https://www.hikvision.com/cn/support/Downloads/
在这里插入图片描述

库文件移植

SDK libs 文件复制到 Android libs下

在这里插入图片描述

工程文件添加动态库(.so)

如下添加相应的动态库,当前使用的为v8a

在这里插入图片描述
点击确认后,在 qgroundcontrol.pro 生成:

ANDROID_EXTRA_LIBS +=  xxxxxx

Android xml 配置

● AndroidManifest.xml 文件中已经修改了名字 :

android:name="org.mavlink.qgroundcontrol.QGCActivity"

在这里插入图片描述

添加 java 文件

android.pri 工程量文件,添加 HkwsManager.java 文件:

在这里插入图片描述

工程文件 .pro 添加

QT += androidextras

2. Java

QGCActivity.java

● QGCActivity.java 根文件中导入包并添加 HkwsManager 自定义的类

在这里插入图片描述
● 在 onCreate 函数中实例化:

public void onCreate(Bundle savedInstanceState) { ...		hkwsManager = new HkwsManager();```
}

HkwsManager.java

package org.mavlink.qgroundcontrol;import java.io.FileInputStream;
import java.io.FileOutputStream;
import com.hikvision.netsdk.HCNetSDK;
import com.hikvision.netsdk.*;
...public class HkwsManager
{public static int lUserID;public static int speed = 2;public HkwsManager() { }//start_cch_20231022public static int testfun() {System.out.println("start my MyActivity...");return 1;}///loginpublic static boolean login_v30_jni(String ip, int port, String user, String password) {NET_DVR_DEVICEINFO_V30 m_oNetDvrDeviceInfoV30 = new NET_DVR_DEVICEINFO_V30();// call NET_DVR_Login_v30 to login on, port 8000 as defaultlUserID = HCNetSDK.getInstance().NET_DVR_Login_V30(ip, port, user, password, m_oNetDvrDeviceInfoV30);if (lUserID < 0) {Log.e("SimpleDemo", "NET_DVR_Login is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError());return false;}System.out.println("NET_DVR_Login is Successful!" + lUserID);return true;}//Left//Right//Up//Down...
}

3. C++

头文件添加:

#include <QAndroidJniObject>
#include <QAndroidJniEnvironment>
#include <QtAndroid>

C++ 中调用 Java 静态函数(hcnNetSDKInit)

//   "192.168.1.64", 8000, "admin", "hk123456", m_oNetDvrDeviceInfoV30);
void HkwsQml::onClickedLogin(QString ip, int port, QString user, QString password)
{initSDK();qDebug() << QString("ip is %1, port is %2, user is %3, password is %4").arg(ip).arg(port).arg(user).arg(password);QAndroidJniObject javaIP = QAndroidJniObject::fromString(ip);QAndroidJniObject javaUser = QAndroidJniObject::fromString(user);QAndroidJniObject javaPassword = QAndroidJniObject::fromString(password);bool  ret = QAndroidJniObject::callStaticMethod<jboolean>("org/mavlink/qgroundcontrol/HkwsManager",                //类名"login_v30_jni",                                               //方法"(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Z",  //(参数类型)返回类型javaIP.object<jstring>(),                                      //传入参数port,javaUser.object<jstring>(),javaPassword.object<jstring>());qDebug() << "login_v30_jni" << ret;}

JNI 传入规则

在这里插入图片描述
在这里插入图片描述

【学习链接】

QtAndroid详解(1):QAndroidJniObject

使用JNI进行JAVA 与 C++ 的通讯(Qt JNI Messenger实例介绍)——安卓开发、Qt

【Qt】Qt for Android创建AndroidManifest.xml调用java

【海康摄像头二次开发】

基于海康威视网络摄像机的Android二次开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity笔记

物体的各种控制方法 using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine;public class Componentl : MonoBehaviour {// Transform transform;GameObject obj;public float floSpeed 0;public float floRotate 0;// Start …

JJJ:PCI / PCIE 的一些术语和概念

转发事务和非转发事务 在PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;总线中&#xff0c;存在两种类型的事务&#xff1a;转发事务和非转发事务。 1、转发事务&#xff08;Forwarded Transactions&#xff09;&#xff1a;转发事务是指从一个PCIe…

11 传输层协议

1、传输层里比较重要的两个协议&#xff0c;一个是 TCP&#xff0c;一个是UDP 对于不从事底层开发的人员来讲&#xff0c;或者对于开发应用的人来讲&#xff0c;最常用的就是这两个协议。 2、TCP 和 UDP 有哪些区别&#xff1f; 1.TCP 是面向连接的&#xff0c;UDP 是面向无…

视频号小店所需资金明细,2023最新费用详解!

我是电商珠珠 22年7月视频号团队开始发展自己的电商平台-视频号小店。截止到目前为止&#xff0c;也才发展了一年的时间。 新平台预示着新机会&#xff0c;在这个平台内可发展的空间很大&#xff0c;利润比较高。 对于新手来说一般可以做到5w的数据&#xff0c;今天就来给大…

P1903 [国家集训队] 数颜色 / 维护队列

带修改的莫队 带修改的莫队就是在基础莫队的基础上增加了一维属性&#xff0c;之前只需要维护l&#xff0c;r现在还需要维护一下时间t&#xff0c;排序还是先按照左端点块儿号排序&#xff0c;然后右端点块儿号排序&#xff0c;最后按时间排序。其它的都是差不多的。 #include…

无人机航迹规划:小龙虾优化算法COA求解无人机路径规划MATLAB(可以修改起始点,地图可自动生成)

一、小龙虾优化算法COA 小龙虾优化算法&#xff08;Crayfsh optimization algorithm&#xff0c;COA&#xff09;由Jia Heming 等人于2023年提出&#xff0c;该算法模拟小龙虾的避暑、竞争和觅食行为&#xff0c;具有搜索速度快&#xff0c;搜索能力强&#xff0c;能够有效平衡…

掌握未来技术趋势:深度学习与量子计算的融合

掌握未来技术趋势&#xff1a;深度学习与量子计算的融合 摘要&#xff1a;本博客将探讨深度学习与量子计算融合的未来趋势&#xff0c;分析这两大技术领域结合带来的潜力和挑战。通过具体案例和技术细节&#xff0c;我们将一睹这两大技术在人工智能、药物研发和金融科技等领域…

Maven多环境下 active: @profileActive@报错问题解决

1.报错&#xff1a; Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character that cannot start any token.(Do not use for indentation) 2.解决办法&#xff1a; 在主pom的文件下&#xff0c;重新加载&#xff1a;

软件测试-根据状态迁移图设计测试用例

测试用例状态迁移图 许多需求用状态机的方式来描述&#xff0c;状态机的测试主要关注状态转移是否正确。对于一个有限状态机&#xff0c;通过测试验证其在给定的条件内是否能够产生需要的状态变化&#xff0c;有没有不可达的状态和非法的状态&#xff0c;是否可能产生非法的状…

算法通关村第六关|白银|二叉树的层次遍历【持续更新】

1.二叉树基本的层序遍历 仅仅遍历并输出全部元素。 List<Integer> simpleLevelOrder(TreeNode root) {if (root null) {return new ArrayList<Integer>();}List<Integer> res new ArrayList<Integer>();LinkedList<TreeNode> queue new Lin…

newstarctf2022week2

Word-For-You(2 Gen) 和week1 的界面一样不过当时我写题的时候出了个小插曲 连接 MySQL 失败: Access denied for user rootlocalhost 这句话印在了背景&#xff0c;后来再进就没了&#xff0c;我猜测是报错注入 想办法传参 可以看到一个name2,试着传参 发现有回显三个字段…

获取淘宝商品详情APi

以下是使用Python获取淘宝商品详情的代码示例&#xff1a; python复制代码 import requests import json def get_taobao_product_details(url): # 发送HTTP请求获取商品详情页面内容 response requests.get(url) # 将页面内容转换为UTF-8编码的字符串 response.encoding u…

51基于matlab模拟退火算法矩形排样

基于matlab模拟退火算法矩形排样&#xff0c;基于最低水平线算法完成矩形板材下料优化&#xff0c;输出最优剩料率和最后的水平线&#xff0c;可替换自己的数据进行优化&#xff0c;程序已调通&#xff0c;可直接运行。 51matlab模拟退火算法矩形排样 (xiaohongshu.com)

Unity 实现文字过长显示省略号

为了整体效果&#xff0c;当文字过长时&#xff0c;我们就会把超出范围的文字弄成省略号。 要实现文字过长显示省略号&#xff0c;只需要使用TextMeshPro&#xff0c;并设置Overflow属性为Ellipsis即可。 如下图&#xff1a; 记。

【广州华锐互动】VR综合布线虚拟实验教学系统

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活和工作带来了前所未有的便利。在建筑行业中&#xff0c;VR技术的应用也日益广泛&#xff0c;尤其是在综合布线方面。 广州华锐互动开发的VR综合布线虚拟实…

【Git】Git基础命令操作速记

【Git】Git基础命令操作速记 文章目录 【Git】Git基础命令操作速记1. 初始化1.1 设置用户名和邮箱1.2 初始化仓库 2. 基础命令2.1 add和commit2.2 reset2.3 查看日志2.4 删除/找回本地仓库文件2.5 找回暂存区文件2.6 diff命令(找不同) 3. 分支命令3.1 查看分支3.2 创建分支3.3 …

ArcGIS Pro设置谷歌影像(无水印)

1 打开软件&#xff0c;命名工程文件&#xff0c;底图&#xff08;Basemap&#xff09;选择【天地图】。 2 点击【视图&#xff08;View&#xff09;】——>【目录面板&#xff08;Catalog pane&#xff09;】&#xff0c;在【门户&#xff08;Portal&#xff09;】中搜索【…

Rust笔记【3】

使用指针的场景&#xff1a; 1&#xff09;编译时类型大小未知&#xff0c;用于定义struct中递归引用自身类型。 2&#xff09;移动大量数据&#xff0c;避免赋值。 3&#xff09;多态 Rust中几种只能指针 Box<T> Rc<T> RefCell<T>Box 1&#xff09;b是Bo…

TypeScript_抓取酒店价格数据

我们导入所需的库&#xff0c;包括http和request。然后&#xff0c;我们定义一个函数&#xff0c;该函数接受一个URL作为参数。 import http from http; import request from request;const fetchHotelPrices (url: string) > {// ... }接下来&#xff0c;我们使用request…

redis: 记录一次线上redis内存占用过大问题解决过程

引言 记录一次线上redis占用过大的排查过程&#xff0c;供后续参考 问题背景 测试同事突然反馈测试环境的web系统无法登陆&#xff0c;同时发现其他子系统也存在各类使用问题 排查过程 1、因为首先反馈的是测试环境系统无法登陆&#xff0c;于是首先去查看了登陆功能的报错…