NFC на андроиде с QT 5.7

У меня проблема с NFC на Android Lollopop с использованием Qt 5.7.

Я пытаюсь создать приложение, которое реагирует на «обнаруженные теги» во время работы, но не заботится о тегах, пока приложение не запущено. Это своего рода привет мир NFC.

Проблема в том, что QNearFieldManager, кажется, работает нормально, но сигналы targetDetected не запускаются. Я подозреваю, что проблема в Android и / или AndroidManifest.xml, так как остальная часть кода очень проста. Я не поместил весь код здесь, так как есть некоторые несвязанные части, в основном о пользовательском интерфейсе и тому подобное. Похоже, что эта часть должна работать с отображением «hello-world» qml на экране. Я просто пытаюсь заставить «Tag Detected» печатать при отладке, пока приложение сфокусировано и тег обнаружен.

Я знаю, что намерения, связанные с nfc, отсутствуют в AndroidManifest.xml, но это только заставило мое приложение перезапуститься при чтении тегов. В документации также говорится, что намерения используются только тогда, когда требуются фоновые действия.

Пожалуйста посоветуй 🙂

#include "mynfc.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<MyNFC>("omat.kirjastot.nfc", 1, 0, "MyNFC");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

return app.exec();
}

Вот код из моего конструктора, который запускает менеджер и соединяет сигналы:

MyNFC::MyNFC(QObject *parent) : QObject(parent)
{
manager = new QNearFieldManager(this);

// Both of these return "true"qDebug() << "manager->isAvailable(); == " << manager->isAvailable();
qDebug() << "manager->startTargetDetection(); == " << manager->startTargetDetection();

// These signals I am waiting for, but they never fire
connect(manager, SIGNAL(targetDetected(QNearFieldTarget*)),
this, SLOT(targetDetected(QNearFieldTarget*)));
}
void MyNFC::targetDetected(QNearFieldTarget *target)
{
qDebug() << "tag found....";

if (!target)
return;
}

Вот кое-что из того, что у меня есть в AndroidManifest.xml

<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16"/>
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --">
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="landscape" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]