现在,我想从我的应用程序中调用此驱动程序,但我使用QT。我发现类QAndroidJNIObject来调用java代码。 我还在github.com/demantz/RFAnalyzer/blob/master/app/src/main/java/com/mantz_it/rfanalyzer/MainActivity.java中找到了java中的一个例子。
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("iqsrc://-a 127.0.0.1 -p 1234 -n 1"));
startActivityForResult(intent, RTL2832U_RESULT_CODE);
}
catch (ActivityNotFoundException e)
{
Log.e(LOGTAG, "createSource: RTL2832U is not installed");
...
}
但我找不到一种方法来编写C ++ / Qt中的正确代码来进行与Java中的示例相同的调用。我不确定这个java代码是否正确或遗漏了什么。
有人能帮助我吗?
另外我想问一下我是否可以通过Qt代码与anet.h libs建立tcp连接?
答案 0 :(得分:0)
您需要使用QJniAndroidObject类来创建JNI对象并对其进行操作。它并不总是很明显,但它最终会起作用。您的9行Java很可能最终成为50行的C ++代码。我建议您逐个转码每一行,并始终检查对象是否有效(QJniAndroidObject::isValid())。
以下是创建Intent
并开始活动的示例:
startActivity on Qt, nothing displays
尝试编写一些代码,如果失败则发布另一个SO问题(创建和操作QJniAndroidObject
的语法对于不熟悉Java的C ++开发人员来说并不总是显而易见的。)