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

文章目录

1. 配置

海康威视 SDK 下载

https://www.hikvision.com/cn/support/Downloads/

库文件移植

SDK libs 文件复制到 Android libs下

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

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

点击确认后,在 qgroundcontrol.pro 生成:

bash 复制代码
ANDROID_EXTRA_LIBS +=  xxxxxx

Android xml 配置

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

bash 复制代码
android:name="org.mavlink.qgroundcontrol.QGCActivity"

添加 java 文件

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

工程文件 .pro 添加

bash 复制代码
QT += androidextras

2. Java

QGCActivity.java

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

● 在 onCreate 函数中实例化:

java 复制代码
public void onCreate(Bundle savedInstanceState) { 
	...		
	hkwsManager = new HkwsManager();
	```
}

HkwsManager.java

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_20231022
    public static int testfun() {
        System.out.println("start my MyActivity...");
        return 1;
    }

    ///login
    public 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 default
        lUserID = 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++

头文件添加:

cpp 复制代码
#include <QAndroidJniObject>
#include <QAndroidJniEnvironment>
#include <QtAndroid>

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

cpp 复制代码
//   "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二次开发

相关推荐
腥臭腐朽的日子熠熠生辉40 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
AAA废品回收站陈师傅40 分钟前
19信号和槽_信号和槽的基本概念
qt
Harrison_zhu41 分钟前
Ubuntu18.04 编译 Android7.1代码报错
android
爱吃巧克力的程序媛42 分钟前
在 Qt 创建项目时,Qt Quick Application (Compat) 和 Qt Quick Application
开发语言·qt
ejinxian42 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之1 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
俏布斯1 小时前
算法日常记录
java·算法·leetcode
27669582921 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring