使用Qt在Android上实现NFC
NFC implementation on Android using Qt
我正在尝试使用Qt从Android上的nfc卡读取UID。a一方面,经过一番研究,我在Java中找到了这个类供阅读。另一方面,我已经阅读了Qt文档如何使用QAndroidJniObject::callStaticObjectMethod
从Java调用和静态对象,但我不知道如何使用Qt的模块AndroidExtras创建活动,并在启动新意图时通知它。
有人有一些建议来让它工作吗?提前感谢,
更新:包含相反
的信息与从 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/Android NDK初学者教程/指南。还有其他几个入门指南。
关键部分如下
创建您的Java活动,您可以根据通知库继承QtActivity。
加载您的库(Qt 可能会为您处理此步骤)省略前面的库和尾随的 .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库没有立即返回结果的情况下。
Oracle 在网站上有 JNI 概述和文档 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/intro.html#wp725
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在C++中,如何在类和函数(可能是模板化的)的头中编写完整的实现
- 使用Qt在Android上实现NFC