diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-05-06 13:07:54 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-05-10 11:17:58 +0000 |
commit | 23c34f415c17146f928e5a3b88320709342dc438 (patch) | |
tree | e57a5dee34bd5d53eb9ab732fc4f261f7bdabd2f /src | |
parent | bc43937fe9d085ff1068420d6f43972fb1297bba (diff) |
Android: use new public jni apis
Replace use of QJNIObjectPrivate with QJniObject. Get context() and
sdkVersion() from QNativeInterface::QAndroidApplication.
Fixes: QTBUG-92550
Change-Id: I625b2269ef253e1a1f76f82edebac236de184c2c
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/sensors/android/sensormanager.cpp | 32 | ||||
-rw-r--r-- | src/plugins/sensors/android/sensormanager.h | 17 |
2 files changed, 28 insertions, 21 deletions
diff --git a/src/plugins/sensors/android/sensormanager.cpp b/src/plugins/sensors/android/sensormanager.cpp index f60ed961..f48f920b 100644 --- a/src/plugins/sensors/android/sensormanager.cpp +++ b/src/plugins/sensors/android/sensormanager.cpp @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2019 BogDan Vatra <bogdan@kde.org> ** Contact: https://www.qt.io/licensing/ ** @@ -37,12 +38,18 @@ ** ****************************************************************************/ #include "sensormanager.h" +#include <QtCore/qcoreapplication.h> + #include <dlfcn.h> SensorManager::SensorManager() { - auto sensorService = QJNIObjectPrivate::getStaticObjectField("android.content.Context", "SENSOR_SERVICE", "Ljava/lang/String;"); - m_sensorManager = QJNIObjectPrivate{QtAndroidPrivate::context()}.callObjectMethod("getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;", sensorService.object()); + auto sensorService = QJniObject::getStaticObjectField("android.content.Context", + "SENSOR_SERVICE", "Ljava/lang/String;"); + QJniObject context = QNativeInterface::QAndroidApplication::context(); + m_sensorManager = context.callObjectMethod("getSystemService", + "(Ljava/lang/String;)Ljava/lang/Object;", + sensorService.object()); setObjectName("QtSensorsLooperThread"); start(); m_waitForStart.acquire(); @@ -54,9 +61,10 @@ SensorManager::~SensorManager() wait(); } -QJNIObjectPrivate SensorManager::javaSensor(const ASensor *sensor) const +QJniObject SensorManager::javaSensor(const ASensor *sensor) const { - return m_sensorManager.callObjectMethod("getDefaultSensor", "(I)Landroid/hardware/Sensor;", ASensor_getType(sensor)); + return m_sensorManager.callObjectMethod("getDefaultSensor", "(I)Landroid/hardware/Sensor;", + ASensor_getType(sensor)); } QSharedPointer<SensorManager> &SensorManager::instance() @@ -72,19 +80,18 @@ ALooper *SensorManager::looper() const static inline ASensorManager* androidManager() { + QJniObject context = QNativeInterface::QAndroidApplication::context(); + auto packageName = context.callObjectMethod("getPackageName", "()Ljava/lang/String;") + .toString().toUtf8(); #if __ANDROID_API__ >= 26 - return ASensorManager_getInstanceForPackage(QJNIObjectPrivate{QtAndroidPrivate::context()} - .callObjectMethod("getPackageName", "()Ljava/lang/String;") - .toString().toUtf8().constData()); + return ASensorManager_getInstanceForPackage(packageName.constData()); #else - if (QtAndroidPrivate::androidSdkVersion() >= 26) { + if (QNativeInterface::QAndroidApplication::sdkVersion() >= 26) { using GetInstanceForPackage = ASensorManager *(*)(const char *); auto handler = dlopen("libandroid.so", RTLD_NOW); auto function = GetInstanceForPackage(dlsym(handler, "ASensorManager_getInstanceForPackage")); if (function) { - auto res = function(QJNIObjectPrivate{QtAndroidPrivate::context()} - .callObjectMethod("getPackageName", "()Ljava/lang/String;") - .toString().toUtf8().constData()); + auto res = function(packageName.constData()); dlclose(handler); return res; } @@ -101,7 +108,8 @@ ASensorManager *SensorManager::manager() const QString SensorManager::description(const ASensor *sensor) const { - return QString::fromUtf8(ASensor_getName(sensor)) + " " + ASensor_getVendor(sensor) + " v" + QString::number(javaSensor(sensor).callMethod<jint>("getVersion")); + return QString::fromUtf8(ASensor_getName(sensor)) + " " + ASensor_getVendor(sensor) + + " v" + QString::number(javaSensor(sensor).callMethod<jint>("getVersion")); } double SensorManager::getMaximumRange(const ASensor *sensor) const diff --git a/src/plugins/sensors/android/sensormanager.h b/src/plugins/sensors/android/sensormanager.h index dc7ffe1f..dd15e04f 100644 --- a/src/plugins/sensors/android/sensormanager.h +++ b/src/plugins/sensors/android/sensormanager.h @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2019 BogDan Vatra <bogdan@kde.org> ** Contact: https://www.qt.io/licensing/ ** @@ -40,13 +41,11 @@ #ifndef SENSORMANAGER_H #define SENSORMANAGER_H -#include <QThread> -#include <QSemaphore> -#include <QMutex> -#include <QWaitCondition> - -#include <private/qjni_p.h> -#include <private/qjnihelpers_p.h> +#include <QtCore/qthread.h> +#include <QtCore/qsemaphore.h> +#include <QtCore/qmutex.h> +#include <QtCore/qwaitcondition.h> +#include <QtCore/qjniobject.h> #include <android/sensor.h> @@ -58,7 +57,7 @@ public: ALooper *looper() const; ASensorManager *manager() const; - QJNIObjectPrivate javaSensor(const ASensor *sensor) const; + QJniObject javaSensor(const ASensor *sensor) const; QString description(const ASensor *sensor) const; double getMaximumRange(const ASensor *sensor) const; @@ -71,7 +70,7 @@ private: QAtomicInt m_quit{0}; ALooper *m_looper = nullptr; QSemaphore m_waitForStart; - QJNIObjectPrivate m_sensorManager; + QJniObject m_sensorManager; }; #endif // SENSORMANAGER_H |