使用 Qt 在 Android 上实现 NFC
NFC implementation on Android using Qt
我正在尝试使用 Qt 从 Android 上的 nfc 卡读取 UID。
a一方面,经过一番研究,我在Java中找到了thisclass供阅读。
另一方面,我已经阅读了 Qt 文档如何使用 QAndroidJniObject::callStaticObjectMethod
从 Java 调用和静态对象,但我不知道如何使用 Qt 的模块 [=] 创建 activity 17=]Extras,并在启动新 Intent 时发出通知。
有没有人有一些建议来让它工作?
提前致谢,
更新:包括相反的信息
与从 C/C++ 代码调用 java 相比,从 java 调用 C 代码非常简单,android ndk 包含几个有用的示例,最简单的是 hello ndk,都可以在 eclipse 中打开,但请注意,您需要先使用 ndk-build 构建 jni 部分。关键部分是正确命名,我遵循 http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/ when i was starting out, Android NDK tutorial/guide for beginners. 还有其他几个入门指南。
关键部分如下
创建你的javaactivity,你可以根据通知库继承QtActivity。
加载你的库(Qt 可能会为你处理这一步)去掉前缀 lib 和尾随 .so 所以 libstuff.so 做如下
// load the library - name matches jni/Android.mk
static {
System.loadLibrary("stuff");
}
从 java 声明你的 C 函数(确保名称与你在 .c 文件中的名称相同,在任何 类
private native String myCFunction();
在您的 java 代码中的某处调用 myCFunction();
String something = myCFunction();
有一个 Qt 示例可以通过合理的文档完全做到这一点
http://doc.qt.io/qt-5/qtandroidextras-notification-example.html
而不是直接从 Qt 调用 java NFC api,您可能希望在 java 中编写一个包装函数并从您的 C++ 应用程序调用它。您可能还会发现使用结果从 java 调用 C++ 方法更容易,尤其是当 NFC 库没有立即 return 结果时。
Oracle 在其网站上有 JNI 概述和文档 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/intro.html#wp725
我正在尝试使用 Qt 从 Android 上的 nfc 卡读取 UID。
a一方面,经过一番研究,我在Java中找到了thisclass供阅读。
另一方面,我已经阅读了 Qt 文档如何使用 QAndroidJniObject::callStaticObjectMethod
从 Java 调用和静态对象,但我不知道如何使用 Qt 的模块 [=] 创建 activity 17=]Extras,并在启动新 Intent 时发出通知。
有没有人有一些建议来让它工作? 提前致谢,
更新:包括相反的信息
与从 C/C++ 代码调用 java 相比,从 java 调用 C 代码非常简单,android ndk 包含几个有用的示例,最简单的是 hello ndk,都可以在 eclipse 中打开,但请注意,您需要先使用 ndk-build 构建 jni 部分。关键部分是正确命名,我遵循 http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/ when i was starting out, Android NDK tutorial/guide for beginners. 还有其他几个入门指南。
关键部分如下
创建你的javaactivity,你可以根据通知库继承QtActivity。
加载你的库(Qt 可能会为你处理这一步)去掉前缀 lib 和尾随 .so 所以 libstuff.so 做如下
// load the library - name matches jni/Android.mk static { System.loadLibrary("stuff"); }
从 java 声明你的 C 函数(确保名称与你在 .c 文件中的名称相同,在任何 类
private native String myCFunction();
在您的 java 代码中的某处调用 myCFunction();
String something = myCFunction();
有一个 Qt 示例可以通过合理的文档完全做到这一点 http://doc.qt.io/qt-5/qtandroidextras-notification-example.html
而不是直接从 Qt 调用 java NFC api,您可能希望在 java 中编写一个包装函数并从您的 C++ 应用程序调用它。您可能还会发现使用结果从 java 调用 C++ 方法更容易,尤其是当 NFC 库没有立即 return 结果时。
Oracle 在其网站上有 JNI 概述和文档 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/intro.html#wp725