From 8cdd3ed68bacfccfdbe719ef03f9f57ff3aa48eb Mon Sep 17 00:00:00 2001 From: Andrew O'Doherty Date: Wed, 7 Mar 2018 11:14:24 +0100 Subject: Add NFC API method isSupported Add API method isSupported to allow to check if the device supports NFC Task-number: QTBUG-62169 Change-Id: I4ff7f06348ecc902e66ee79bdd8abde672578904 Reviewed-by: Alex Blasche --- .../nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java | 5 +++++ src/nfc/android/androidjninfc.cpp | 5 +++++ src/nfc/android/androidjninfc_p.h | 1 + src/nfc/qnearfieldmanager.cpp | 16 +++++++++++++++- src/nfc/qnearfieldmanager.h | 1 + src/nfc/qnearfieldmanager_android.cpp | 5 +++++ src/nfc/qnearfieldmanager_android_p.h | 1 + src/nfc/qnearfieldmanager_neard.cpp | 15 +++++++++++++++ src/nfc/qnearfieldmanager_neard_p.h | 2 ++ src/nfc/qnearfieldmanager_p.h | 5 +++++ 10 files changed, 55 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java b/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java index 345b87d3..6b0fbcbd 100644 --- a/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java +++ b/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java @@ -169,6 +169,11 @@ public class QtNfc return m_adapter.isEnabled(); } + static public boolean isSupported() + { + return (m_adapter != null); + } + static public Intent getStartIntent() { Log.d(TAG, "getStartIntent"); diff --git a/src/nfc/android/androidjninfc.cpp b/src/nfc/android/androidjninfc.cpp index f21d3b08..9a1c5227 100644 --- a/src/nfc/android/androidjninfc.cpp +++ b/src/nfc/android/androidjninfc.cpp @@ -63,6 +63,11 @@ bool isAvailable() return QAndroidJniObject::callStaticMethod(nfcClassName,"isAvailable"); } +bool isSupported() +{ + return QAndroidJniObject::callStaticMethod(nfcClassName,"isSupported"); +} + bool stopDiscovery() { return QAndroidJniObject::callStaticMethod(nfcClassName,"stop"); diff --git a/src/nfc/android/androidjninfc_p.h b/src/nfc/android/androidjninfc_p.h index 746a93ee..60e9a107 100644 --- a/src/nfc/android/androidjninfc_p.h +++ b/src/nfc/android/androidjninfc_p.h @@ -71,6 +71,7 @@ bool startDiscovery(); bool stopDiscovery(); QAndroidJniObject getStartIntent(); bool isAvailable(); +bool isSupported(); bool registerListener(AndroidNfcListenerInterface *listener); bool unregisterListener(AndroidNfcListenerInterface *listener); QAndroidJniObject getTag(const QAndroidJniObject &intent); diff --git a/src/nfc/qnearfieldmanager.cpp b/src/nfc/qnearfieldmanager.cpp index 099a070c..0b9c9161 100644 --- a/src/nfc/qnearfieldmanager.cpp +++ b/src/nfc/qnearfieldmanager.cpp @@ -201,7 +201,10 @@ QNearFieldManager::~QNearFieldManager() } /*! - Returns true if NFC functionality is available; otherwise returns false. + Returns \c true if the device has a NFC adapter and + it is turned on; otherwise returns \c false. + + \sa isSupported() */ bool QNearFieldManager::isAvailable() const { @@ -210,6 +213,17 @@ bool QNearFieldManager::isAvailable() const return d->isAvailable(); } +/*! + Returns \c true if the underlying device has a NFC adapter; otherwise returns \c false. + + \sa isAvailable() +*/ +bool QNearFieldManager::isSupported() const +{ + Q_D(const QNearFieldManager); + + return d->isSupported(); +} /*! \fn bool QNearFieldManager::startTargetDetection() diff --git a/src/nfc/qnearfieldmanager.h b/src/nfc/qnearfieldmanager.h index 9583e01f..1dcb3485 100644 --- a/src/nfc/qnearfieldmanager.h +++ b/src/nfc/qnearfieldmanager.h @@ -70,6 +70,7 @@ public: ~QNearFieldManager(); bool isAvailable() const; + bool isSupported() const; void setTargetAccessModes(TargetAccessModes accessModes); TargetAccessModes targetAccessModes() const; diff --git a/src/nfc/qnearfieldmanager_android.cpp b/src/nfc/qnearfieldmanager_android.cpp index a5693218..dd814787 100644 --- a/src/nfc/qnearfieldmanager_android.cpp +++ b/src/nfc/qnearfieldmanager_android.cpp @@ -176,6 +176,11 @@ bool QNearFieldManagerPrivateImpl::isAvailable() const return AndroidNfc::isAvailable(); } +bool QNearFieldManagerPrivateImpl::isSupported() const +{ + return AndroidNfc::isSupported(); +} + bool QNearFieldManagerPrivateImpl::startTargetDetection() { if (m_detecting) diff --git a/src/nfc/qnearfieldmanager_android_p.h b/src/nfc/qnearfieldmanager_android_p.h index 69c99709..563d26bc 100644 --- a/src/nfc/qnearfieldmanager_android_p.h +++ b/src/nfc/qnearfieldmanager_android_p.h @@ -76,6 +76,7 @@ public: ~QNearFieldManagerPrivateImpl(); virtual bool isAvailable() const; + bool isSupported() const override; virtual bool startTargetDetection(); virtual void stopTargetDetection(); virtual int registerNdefMessageHandler(QObject *object, const QMetaMethod &method); diff --git a/src/nfc/qnearfieldmanager_neard.cpp b/src/nfc/qnearfieldmanager_neard.cpp index f1758ae9..450b9b42 100644 --- a/src/nfc/qnearfieldmanager_neard.cpp +++ b/src/nfc/qnearfieldmanager_neard.cpp @@ -114,6 +114,21 @@ bool QNearFieldManagerPrivateImpl::isAvailable() const return false; } +bool QNearFieldManagerPrivateImpl::isSupported() const +{ + if (m_adapterPath.isEmpty()) { + qCWarning(QT_NFC_NEARD) << "no adapter found, neard daemon running?"; + return false; + } + + if (!m_neardHelper->dbusObjectManager()->isValid() || m_adapterPath.isNull()) { + qCWarning(QT_NFC_NEARD) << "dbus object manager invalid or adapter path invalid"; + return false; + } + + return true; +} + bool QNearFieldManagerPrivateImpl::startTargetDetection() { qCDebug(QT_NFC_NEARD) << "starting target detection"; diff --git a/src/nfc/qnearfieldmanager_neard_p.h b/src/nfc/qnearfieldmanager_neard_p.h index b50f947a..cf026982 100644 --- a/src/nfc/qnearfieldmanager_neard_p.h +++ b/src/nfc/qnearfieldmanager_neard_p.h @@ -75,6 +75,8 @@ public: bool isAvailable() const; + bool isSupported() const override; + bool startTargetDetection(); void stopTargetDetection(); diff --git a/src/nfc/qnearfieldmanager_p.h b/src/nfc/qnearfieldmanager_p.h index 7e461da8..8e86ce4b 100644 --- a/src/nfc/qnearfieldmanager_p.h +++ b/src/nfc/qnearfieldmanager_p.h @@ -82,6 +82,11 @@ public: return false; } + virtual bool isSupported() const + { + return false; + } + virtual bool startTargetDetection() { return false; -- cgit v1.2.3